home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Moving Pixels Collection
/
Moving Pixels Collection.iso
/
st
/
growth
/
source
/
qbits.s
< prev
Wrap
Text File
|
1985-11-18
|
183KB
|
7,093 lines
start: clr.l -(SP) ;Go into supervisor mode
move.w #$20,-(SP)
trap #1
addq.l #6,SP
move.l D0,spv_sp
move.b #0,$484
move.l #$58000,$436
move.l #$31415926,$426
move.l #myreset,$42a
move.w #4,-(sp)
trap #14
addq.l #2,sp
move.w d0,ressave
move.w #0,-(sp)
move.l #-1,-(sp)
move.l #-1,-(sp)
move.w #5,-(sp)
trap #14
add.l #12,sp
bra actual
myreset:
rts
ressave: blk.w 1,0
oldvbl1: blk.l 1,0
MFP: EQU $FFFA00
IERA: EQU MFP+$07
IERB: EQU MFP+$09
IPRA: EQU MFP+$0B
ISRA: EQU MFP+$0F
IMRA: EQU MFP+$13
IMRB: EQU MFP+$15
VECTOR: EQU MFP+$17
TACR: EQU MFP+$19
TADR: EQU MFP+$1F
ISRVEC: EQU $134
SCREG: EQU $FF8800 ;CHIP REGISTER SELECT
SCDATA: EQU $FF8802 ;REGISTER DATA
P_TERM_OLD: EQU 0
F_SUPER: EQU $20
GETMPB: EQU 0
BCONSTAT: EQU 1
BCONIN: EQU 2
BCONOUT: EQU 3
INPUT: EQU $FB0001
OUTPUT: EQU $FA0000
actual:
BSR SAVEMFP ;SAVE NATURAL MFP CONDITIONS
MOVE.W #$2700,SR
LEA INULL,A0
BSR SETINT ;SET NULL INTERRUPT ADDRESS
MOVEQ #0,D0 ;SET INITIAL FREQUENCY
BSR SETFREQ
BSR ENABMFP ;SET THE MFP RUNNING
BSR SETSND ;SET UP SOUND REGISTERS
SF XTERNAL ;SET THE MODE FOR INTERNAL ATARI USE
MOVE.W #$2000,SR ;ENABLE THE INTERRUPTS
jsr mousof
jsr putrout
jsr getscrn
jsr clearsc
jsr plotinit
jsr fadeout
jsr linea
move.w mx,d0
jsr randomseed
lea teleavb,a0
jsr putvbl
move.l a1,oldvbl1
jsr putsp
jsr putsp
ftf:
jsr fadeout
jsr loadscr
move.b #1,dopr
bsr putnums
bsr flip_scr
bsr putnums
bsr flip_scr
* jsr titlestuff
jsr loadsounds
move.w #594,mmax
move.w #0,mmin
move.w #594,mmax2
move.w #0,mmin2
move.w #-1,sdead
move.w #-1,break
move.w #-1,remember
move.w #-1,bigavail
move.w #2000,emancnt
move.w #-1,attacker
move.w #-1,battacker
move.w #-1,hesdead
move.w #5,speed
move.w #1,dopr
move.w #0,score
move.w #3,ships
move.w #0,level
move.w #0,buttondat
move.w speed,grtimer
move.w #50,mx
move.w #-1,byebye
move.w #-1,bigflg
move.w #-1,shooting
move.l #ship0,wship0
move.l #ship1,wship1
move.l #ship2,wship2
move.l #ship3,wship3
move.l #block1,whichblock
move.w #5,brhits
bsr copyintoboth
bsr putfirst
bsr weapons
bsr fadein
bsr pregrow
bra testy
testy:
bsr copyscr
bsr smallgrow
bsr shoot
bsr putsp
bsr bbani
bsr brainy
bsr amidead
bsr animboom
bsr dopanel
bsr attack
bsr battack
bsr putnums
bsr flip_scr
bsr keyboard
move.l #ship0,wship0
move.l #ship1,wship1
move.l #ship2,wship2
move.l #ship3,wship3
cmpi.w #10,brhits
bge nextlev
bra testy
nextlev:
move.w #0,blani
move.w #104,b1x
move.w #91,b1y
move.w #104,b2x
move.w #91,b2y
move.w #104,b3x
move.w #91,b3y
move.w #104,b4x
move.w #91,b4y
move.w #104,b5x
move.w #91,b5y
move.w #104,b6x
move.w #91,b6y
move.w #104,b7x
move.w #91,b7y
move.w #104,b8x
move.w #91,b8y
bsr blowitup
skipb:
cmpi.w #25,level
bge youwin
addq.w #1,level
move.l #0,d0
move.w level,d0
mulu #4,d0
move.l #blocklist,a0
move.l (a0,d0.w),whichblock
bsr fadeout
move.l #0,d0
move.w level,d0
mulu #2,d0
move.l #growlist,a0
move.w (a0,d0.w),speed
move.w #1,dopr
bsr copyintoboth
bsr putfirst
bsr copyscr
bsr flip_scr
bsr copyscr
bsr weapons
move.w #0,brhits
move.w #1,dopr
move.w #-1,shooting
move.w #-1,byebye
move.w #-1,attacker
move.w #-1,battacker
move.w #594,mmax
move.w #0,mmin
move.w #594,mmax2
move.w #0,mmin2
move.w #1,dopr
move.l #0,d0
move.w level,d0
mulu #2,d0
move.l #chlist,a0
move.w (a0,d0.w),d0
cmpi.w #1,d0
beq prebreakout
cmpi.w #2,d0
beq bubblestuff
move.w #-1,break
bsr fadein
bsr pregrow
bra testy
blocklist:
dc.l block1,block2,block3,block3,block4,block5,block5,block6
dc.l block7,block7,block8,block9,block9,block10,block11,block11
dc.l block12,block13,block13,block14,block15,block15,block16
dc.l block17,block17,block18
growlist:
dc.w 3,3,30,3,3,30,3,3,30,2,2,30,2,2,30,2,2,30,1,1,30,1,1,30
dc.w 1,1
chlist: dc.w 0,0,1,0,0,2,0,0,1,0,0,2,0,0,1,0,0,2,0,0,1,0,0,2,0,0,1
***********************************
youwin:
move.w #1,dopr
bsr putnums
bsr flip_scr
bsr putnums
bsr printwin
ywl:
* bsr keyboard
tst.w buttondat
bne ywl2
bra ywl
ywl2:
bra ftf
printwin:
move.l #wintext,-(sp)
move.w #9,-(sp)
trap #1
addq.l #6,sp
bsr flip_scr
move.l #wintext,-(sp)
move.w #9,-(sp)
trap #1
addq.l #6,sp
rts
wintext:
dc.b 27,'b','1',27,'c','0'
dc.b 27,'Y',32+3,32+7,'CONGRATULATIONS'
dc.b 27,'Y',32+5,32+1,'YOU HAVE KILLED THE GROWTH'
dc.b 27,'Y',32+7,32+1,'MOUSE BUTTON FOR NEW GAME',0
even
*********************************
weapons:
tst.w bigavail
bpl isavail
move.l hiden,a0
add.l #25080,a0
move.w #6,d0
move.l #unarmed,a1
wep1: move.l (a1)+,(a0)+
move.l (a1)+,(a0)+
move.l (a1)+,(a0)+
move.l (a1)+,(a0)+
move.l (a1)+,(a0)+
move.l (a1)+,(a0)+
move.l (a1)+,(a0)+
move.l (a1)+,(a0)+
add.l #128,a0
dbf d0,wep1
move.l seen,a0
add.l #25080,a0
move.w #6,d0
move.l #unarmed,a1
wep2: move.l (a1)+,(a0)+
move.l (a1)+,(a0)+
move.l (a1)+,(a0)+
move.l (a1)+,(a0)+
move.l (a1)+,(a0)+
move.l (a1)+,(a0)+
move.l (a1)+,(a0)+
move.l (a1)+,(a0)+
add.l #128,a0
dbf d0,wep2
rts
isavail:
move.l hiden,a0
add.l #25080,a0
move.w #6,d0
move.l #armed,a1
wep3: move.l (a1)+,(a0)+
move.l (a1)+,(a0)+
move.l (a1)+,(a0)+
move.l (a1)+,(a0)+
move.l (a1)+,(a0)+
move.l (a1)+,(a0)+
move.l (a1)+,(a0)+
move.l (a1)+,(a0)+
add.l #128,a0
dbf d0,wep3
move.l seen,a0
add.l #25080,a0
move.w #6,d0
move.l #armed,a1
wep4: move.l (a1)+,(a0)+
move.l (a1)+,(a0)+
move.l (a1)+,(a0)+
move.l (a1)+,(a0)+
move.l (a1)+,(a0)+
move.l (a1)+,(a0)+
move.l (a1)+,(a0)+
move.l (a1)+,(a0)+
add.l #128,a0
dbf d0,wep4
rts
*****************************************************************
teleavb:
tst.w teled
bpl telesame
move.l #0,d0
move.w tacount,d0
mulu #4,d0
lea telelist,a0
move.l (a0,d0.w),a0
move.l #19800,d0
bsr puttels
move.w #3,teled
addq.w #1,tacount
cmpi.w #6,tacount
blt teleax
move.w #0,tacount
teleax:
bra tel2
telesame:
move.l #0,d0
move.w tacount,d0
mulu #4,d0
lea telelist,a0
move.l (a0,d0.w),a0
move.l #19800,d0
bsr puttels
subq.w #1,teled
bra tel2
puttels:
move.l seen,a1
add.l d0,a1
move.w #21,d0
pts1: move.l (a0)+,(a1)+
move.l (a0)+,(a1)+
move.l (a0)+,(a1)+
move.l (a0)+,(a1)+
add.l #144,a1
dbf d0,pts1
rts
tel2: tst.w teled2
bpl telesame2
move.l #0,d0
move.w tacount2,d0
mulu #4,d0
lea telelist2,a0
move.l (a0,d0.w),a0
move.l #19816,d0
bsr puttels
move.w #4,teled2
addq.w #1,tacount2
cmpi.w #5,tacount2
blt teleax2
move.w #0,tacount2
teleax2:
rts
telesame2:
move.l #0,d0
move.w tacount2,d0
mulu #4,d0
lea telelist2,a0
move.l (a0,d0.w),a0
move.l #19816,d0
bsr puttels
subq.w #1,teled2
rts
telelist:
dc.l telea1,telea2,telea3,telea4,telea5,telea6
tacount: blk.w 1,0
teled: blk.w 1,0
telelist2:
dc.l teleb1,teleb2,teleb3,teleb4,teleb5
tacount2: blk.w 1,0
teled2: blk.w 1,0
*****************************************************************
titlestuff:
move.w #-1,-(sp)
move.l screen4,-(sp)
move.l screen4,-(sp)
move.w #5,-(sp)
trap #14
add.l #12,sp
move.w #$2700,sr
moveq #2,d0
bsr setfreq
move.w #$2000,sr
jsr loadmusic
bsr fadein
* bsr stm
twait:
tst.b inuse
beq stm
tst.w buttondat
beq twait
MOVE.W #$2700,SR
LEA INULL,A0 ;REMOVE REPLAY INT.
BSR SETINT
SF INUSE
moveq #0,d0
bsr setfreq
MOVE.W #$2000,SR
bsr fadeout
rts
stm: move.l #sounds,currentsad
move.l #sounds+50081,bottom
move.b #1,inuse
lea ireplay,a0
bsr setint
bra twait
rts
*****************************************
* sound subroutines *
*****************************************
bigshot:
move.l shoot1s,currentsad
move.l shoot1b,bottom
st inuse
lea ireplay,a0
bsr setint
rts
litshot:
move.l shoot0s,currentsad
move.l shoot0b,bottom
st inuse
lea ireplay,a0
bsr setint
rts
laugh:
move.l laughs,currentsad
move.l laughb,bottom
st inuse
lea ireplay,a0
bsr setint
rts
pay:
move.l pays,currentsad
move.l payb,bottom
st inuse
lea ireplay,a0
bsr setint
rts
appear:
move.l appears,currentsad
move.l appearb,bottom
st inuse
lea ireplay,a0
bsr setint
rts
reward:
move.l rewards,currentsad
move.l rewardb,bottom
st inuse
lea ireplay,a0
bsr setint
rts
boom:
move.l booms,currentsad
move.l boomb,bottom
st inuse
lea ireplay,a0
bsr setint
rts
bigboomsound:
move.l bigbooms,currentsad
move.l bigboomb,bottom
st inuse
lea ireplay,a0
bsr setint
rts
****************************************
* THE NULL INTERRUPT ROUTINE *
****************************************
INULL: RTE
****************************************
* REPLAY FROM MEMORY *
****************************************
IREPLAY:
movem.l d0-d7/a0-a6,-(sp)
MOVEQ #0,D7
move.l currentsad,a6
MOVE.B (A6)+,D7 ;READ FROM RAM
CMP.L bottom,A6 ;EXCEDED END STOP
BGT.S HALTREP ;BRANCH IF SO
move.l a6,currentsad
JMP INTOUTP ;ELSE OUTPUT IT
HALTREP:
MOVE.W #$2700,SR
LEA INULL,A0 ;REMOVE REPLAY INT.
BSR SETINT
SF INUSE
MOVE.W #$2000,SR
movem.l (sp)+,d0-d7/a0-a6
RTE
currentsad: blk.l 1,0
bottom: blk.l 1,0
INTOUTP:
move.l #screg,a4
lea snd_out,a3
AND.W #$00FF,D7 ;MASK OFF RUBBISH
ADD.B #$80,D7 ;COMPLENT VALUE
LSL.W #3,D7 ;DOUBLE LONG WORD OFFSET
MOVE.L 0(A3,D7.W),d5 ;GET DATA #1
MOVE.W 4(A3,D7.W),D4 ;GET DATA #2
MOVEP.L D5,0(A4) ;PLAY #1
MOVEP.W D4,0(A4) ;PLAY #2
movem.l (sp)+,d0-d7/a0-a6
RTE
* Internal sound lookup table. *
EVEN
SND_OUT:
dc.w $80c,$90b,$a09,0,$80c,$90b,$a09,0
dc.w $80d,$908,$a08,0,$80b,$90b,$a0b,0
dc.w $80d,$909,$a05,0,$80c,$90b,$a08,0
dc.w $80d,$909,$a02,0,$80d,$908,$a06,0
dc.w $80c,$90b,$a07,0,$80d,$907,$a07,0
dc.w $80c,$90b,$a06,0,$80c,$90a,$a09,0
dc.w $80b,$90b,$a0a,0,$80c,$90b,$a02,0
dc.w $80c,$90b,$a00,0,$80c,$90a,$a08,0
dc.w $80d,$906,$a04,0,$80d,$905,$a05,0
dc.w $80d,$905,$a04,0,$80c,$909,$a09,0
dc.w $80d,$904,$a03,0,$80b,$90b,$a09,0
dc.w $80c,$90a,$a05,0,$80b,$90a,$a0a,0
dc.w $80c,$909,$a08,0,$80b,$90b,$a08,0
dc.w $80c,$90a,$a00,0,$80c,$90a,$a00,0
dc.w $80c,$909,$a07,0,$80b,$90b,$a07,0
dc.w $80c,$909,$a06,0,$80b,$90b,$a06,0
dc.w $80b,$90a,$a09,0,$80b,$90b,$a05,0
dc.w $80a,$90a,$a0a,0,$80b,$90b,$a02,0
dc.w $80b,$90a,$a08,0,$80c,$907,$a07,0
dc.w $80c,$908,$a04,0,$80c,$907,$a06,0
dc.w $80b,$909,$a09,0,$80c,$906,$a06,0
dc.w $80a,$90a,$a09,0,$80c,$907,$a03,0
dc.w $80b,$90a,$a05,0,$80b,$909,$a08,0
dc.w $80b,$90a,$a03,0,$80a,$90a,$a08,0
dc.w $80b,$90a,$a00,0,$80b,$909,$a07,0
dc.w $80b,$908,$a08,0,$80a,$90a,$a07,0
dc.w $80a,$909,$a09,0,$80c,$901,$a01,0
dc.w $80a,$90a,$a06,0,$80b,$908,$a07,0
dc.w $80a,$90a,$a05,0,$80a,$909,$a08,0
dc.w $80a,$90a,$a02,0,$80a,$90a,$a01,0
dc.w $80a,$90a,$a00,0,$809,$909,$a09,0
dc.w $80a,$908,$a08,0,$80b,$908,$a01,0
dc.w $80a,$909,$a06,0,$80b,$907,$a04,0
dc.w $80a,$909,$a05,0,$809,$909,$a08,0
dc.w $80a,$909,$a03,0,$80a,$908,$a06,0
dc.w $80a,$909,$a00,0,$809,$909,$a07,0
dc.w $809,$908,$a08,0,$80a,$908,$a04,0
dc.w $809,$909,$a06,0,$80a,$908,$a01,0
dc.w $809,$909,$a05,0,$809,$908,$a07,0
dc.w $808,$908,$a08,0,$809,$909,$a02,0
dc.w $809,$908,$a06,0,$809,$909,$a00,0
dc.w $809,$907,$a07,0,$808,$908,$a07,0
dc.w $809,$907,$a06,0,$809,$908,$a02,0
dc.w $808,$908,$a06,0,$809,$906,$a06,0
dc.w $808,$907,$a07,0,$808,$908,$a04,0
dc.w $808,$907,$a06,0,$808,$908,$a02,0
dc.w $807,$907,$a07,0,$808,$906,$a06,0
dc.w $808,$907,$a04,0,$807,$907,$a06,0
dc.w $808,$906,$a05,0,$808,$906,$a04,0
dc.w $807,$906,$a06,0,$807,$907,$a04,0
dc.w $808,$905,$a04,0,$806,$906,$a06,0
dc.w $807,$906,$a04,0,$807,$905,$a05,0
dc.w $806,$906,$a05,0,$806,$906,$a04,0
dc.w $806,$905,$a05,0,$806,$906,$a02,0
dc.w $806,$905,$a04,0,$805,$905,$a05,0
dc.w $806,$905,$a02,0,$805,$905,$a04,0
dc.w $805,$904,$a04,0,$805,$905,$a02,0
dc.w $804,$904,$a04,0,$804,$904,$a03,0
dc.w $804,$904,$a02,0,$804,$903,$a03,0
dc.w $803,$903,$a03,0,$803,$903,$a02,0
dc.w $803,$902,$a02,0,$802,$902,$a02,0
dc.w $802,$902,$a01,0,$801,$901,$a01,0
dc.w $802,$901,$a00,0,$801,$901,$a00,0
dc.w $801,$900,$a00,0,$800,$900,$a00,0
dc.w $80e,$90d,$a0c,0,$80f,$903,$a00,0
dc.w $80f,$903,$a00,0,$80f,$903,$a00,0
dc.w $80f,$903,$a00,0,$80f,$903,$a00,0
dc.w $80f,$903,$a00,0,$80e,$90d,$a0b,0
dc.w $80e,$90d,$a0b,0,$80e,$90d,$a0b,0
dc.w $80e,$90d,$a0b,0,$80e,$90d,$a0b,0
dc.w $80e,$90d,$a0b,0,$80e,$90d,$a0b,0
dc.w $80e,$90d,$a0a,0,$80e,$90d,$a0a,0
dc.w $80e,$90d,$a0a,0,$80e,$90d,$a0a,0
dc.w $80e,$90c,$a0c,0,$80e,$90d,$a00,0
dc.w $80d,$90d,$a0d,0,$80d,$90d,$a0d,0
dc.w $80d,$90d,$a0d,0,$80d,$90d,$a0d,0
dc.w $80d,$90d,$a0d,0,$80d,$90d,$a0d,0
dc.w $80e,$90c,$a0b,0,$80e,$90c,$a0b,0
dc.w $80e,$90c,$a0b,0,$80e,$90c,$a0b,0
dc.w $80e,$90c,$a0b,0,$80e,$90c,$a0b,0
dc.w $80e,$90c,$a0b,0,$80e,$90c,$a0b,0
dc.w $80e,$90c,$a0a,0,$80e,$90c,$a0a,0
dc.w $80e,$90c,$a0a,0,$80e,$90c,$a0a,0
dc.w $80d,$90d,$a0c,0,$80d,$90d,$a0c,0
dc.w $80e,$90c,$a09,0,$80e,$90c,$a09,0
dc.w $80e,$90c,$a05,0,$80e,$90c,$a00,0
dc.w $80e,$90c,$a00,0,$80e,$90b,$a0b,0
dc.w $80e,$90b,$a0b,0,$80e,$90b,$a0b,0
dc.w $80e,$90b,$a0b,0,$80e,$90b,$a0a,0
dc.w $80e,$90b,$a0a,0,$80e,$90b,$a0a,0
dc.w $80d,$90d,$a0b,0,$80d,$90d,$a0b,0
dc.w $80d,$90d,$a0b,0,$80e,$90b,$a09,0
dc.w $80e,$90b,$a09,0,$80e,$90b,$a09,0
dc.w $80d,$90c,$a0c,0,$80d,$90d,$a0a,0
dc.w $80e,$90b,$a07,0,$80e,$90b,$a00,0
dc.w $80e,$90b,$a00,0,$80d,$90d,$a09,0
dc.w $80d,$90d,$a09,0,$80e,$90a,$a09,0
dc.w $80d,$90d,$a08,0,$80d,$90d,$a07,0
dc.w $80d,$90d,$a04,0,$80d,$90d,$a00,0
dc.w $80e,$90a,$a04,0,$80e,$909,$a09,0
dc.w $80e,$909,$a09,0,$80d,$90c,$a0b,0
dc.w $80e,$909,$a08,0,$80e,$909,$a08,0
dc.w $80e,$909,$a07,0,$80e,$908,$a08,0
dc.w $80e,$909,$a01,0,$80c,$90c,$a0c,0
dc.w $80d,$90c,$a0a,0,$80e,$908,$a06,0
dc.w $80e,$907,$a07,0,$80e,$908,$a00,0
dc.w $80e,$907,$a05,0,$80e,$906,$a06,0
dc.w $80d,$90c,$a09,0,$80e,$905,$a05,0
dc.w $80e,$904,$a04,0,$80d,$90c,$a08,0
dc.w $80d,$90b,$a0b,0,$80e,$900,$a00,0
dc.w $80d,$90c,$a06,0,$80d,$90c,$a05,0
dc.w $80d,$90c,$a02,0,$80c,$90c,$a0b,0
dc.w $80c,$90c,$a0b,0,$80d,$90b,$a0a,0
dc.w $80d,$90b,$a0a,0,$80d,$90b,$a0a,0
dc.w $80d,$90b,$a0a,0,$80c,$90c,$a0a,0
dc.w $80c,$90c,$a0a,0,$80c,$90c,$a0a,0
dc.w $80d,$90b,$a09,0,$80d,$90b,$a09,0
dc.w $80d,$90a,$a0a,0,$80d,$90a,$a0a,0
dc.w $80d,$90a,$a0a,0,$80c,$90c,$a09,0
dc.w $80c,$90c,$a09,0,$80c,$90c,$a09,0
dc.w $80d,$90b,$a06,0,$80c,$90b,$a0b,0
dc.w $80c,$90c,$a08,0,$80d,$90b,$a00,0
dc.w $80d,$90b,$a00,0,$80c,$90c,$a07,0
dc.w $80c,$90c,$a06,0,$80c,$90c,$a05,0
dc.w $80c,$90c,$a03,0,$80c,$90c,$a01,0
dc.w $80c,$90b,$a0a,0,$80d,$90a,$a05,0
dc.w $80d,$90a,$a04,0,$80d,$90a,$a02,0
dc.w $80d,$909,$a08,0,$80d,$909,$a08,0
* PRESERVE THE MFP REGISTERS *
SAVEMFP:
move.w sr,mysr
MOVE.B IERA,MFPMEM ;PUSH CURRENT MFP DATA
MOVE.B IERB,MFPMEM+1
MOVE.B IMRA,MFPMEM+2
MOVE.B IMRB,MFPMEM+3
MOVE.B TADR,MFPMEM+4
MOVE.B TACR,MFPMEM+5
MOVE.B VECTOR,MFPMEM+6
RTS
mysr:
blk.w 1,0
* REPLACE NATURAL RUNNING MFP VALUES *
OLDMFP:
MOVE.B MFPMEM+6,VECTOR ;RESTORE OLD MFP VALS
MOVE.B MFPMEM+5,TACR
MOVE.B MFPMEM+4,TADR
MOVE.B MFPMEM+3,IMRB
MOVE.B MFPMEM+2,IMRA
MOVE.B MFPMEM+1,IERB
MOVE.B MFPMEM,IERA
move.w mysr,sr
RTS
* CHOOSE INTERRUPT VECTOR *
* SET UP SELECTED INTERRUPT WITH A0.L
* CONTAINING THE NEW ROUTINE VECTOR.
SETINT: MOVE.W SR,D0 ;SAVE SYSTEM STATUS
MOVE.W #$2700,SR ;INTERRUPTS OFF
MOVE.L A0,ISRVEC ;INSTALL NEW ROUTINE
MOVE.W D0,SR ;RE-ASSERT OLD STATUS
RTS
* SET UP MFP FREQUENCY *
SETFREQ:
MOVE.B #0,TACR ;DISABLE TIMER
AND.W #7,D0 ;ENSURE 0-7
MOVE.W D0,FREQNUM ;SAVE FOR PROSPERITY
LEA FREQTAB,A0 ;GET THE FREQUENCY XREF ADDR
LSL.W #1,D0 ;CONVERT TO WORD TABLE OFFSET
MOVE.W 0(A0,D0.W),D0 ;& GET THE MFP DATA
MOVE.B D0,TACR ;LSB = CONTROL REG BYTE
LSR.W #8,D0 ;SHIFT DOWN NEXT BYTE
MOVE.B D0,TADR ;NEXT = DATA REG BYTE
RTS
* ENABLE THE MFP *
ENABMFP:
bset #5,IMRA
* MOVE.B #0,IMRB
bset #5,IERA
* MOVE.B #0,IERB
BCLR #3,VECTOR
RTS
* SET UP THE SOUND CHIP CHANNELS *
SETSND:
MOVE.B #0,SCREG ;CHANNEL A
MOVE.B #0,SCDATA
MOVE.B #1,SCREG
MOVE.B #0,SCDATA
MOVE.B #2,SCREG ;CHANNEL B
MOVE.B #0,SCDATA
MOVE.B #3,SCREG
MOVE.B #0,SCDATA
MOVE.B #4,SCREG ;CHANNEL C
MOVE.B #0,SCDATA
MOVE.B #5,SCREG
MOVE.B #0,SCDATA
MOVE.B #7,SCREG ;SET UP CHANNEL MIXING & PORT 'A' I/O
MOVE.B #$FF,SCDATA
MOVE.B #8,SCREG ;SET ALL VOLUMES TO ZERO
MOVE.B #0,SCDATA
MOVE.B #9,SCREG
MOVE.B #0,SCDATA
MOVE.B #10,SCREG
MOVE.B #0,SCDATA
RTS
**************************************
* MFP/FREQUENCY TABLE *
**************************************
EVEN
FREQTAB:
DC.W $0506 ;4.9 KHZ
DC.W $0505 ;7.68 KHZ
DC.W $0405 ;9.6 KHZ
DC.W $2901 ;14.99 KHZ
DC.W $1F01 ;19.8 KHZ
DC.W $0802 ;30.7 KHZ
DC.W $0106 ;DUMMY
DC.W $0106 ;DUMMY
**************************************
* DEFINE PROGRAM STORAGE *
**************************************
EVEN
XTERNAL:
blk.B 1,0 ;$FF = EXTERNAL O/P SELECTED
INUSE:
blk.B 1,0 ;INTERRUPT IN USE FLAG
OPTION: blk.B 1,0 ;INT. OPTION $FF = SAMPLE
EVEN
FREQNUM:
blk.W 1,1 ;FREQUENCY SELECTED
MFPMEM: blk.B 30,0 ;SAVED MFP DATA
*****************************************************************
pregrow:
move.w speed,-(sp)
move.w #0,speed
move.w #50,d0
pg:
move.w d0,-(sp)
bsr smallgrow
bsr copyscr
bsr flip_scr
move.w (sp)+,d0
dbf d0,pg
move.w (sp)+,speed
rts
*******************************
fadeout:
move.w #$2000,sr
lea foutlist,a6
move.w #6,d6
fo:
move.l (a6)+,-(sp)
move.w #6,-(sp)
trap #14
addq.l #6,sp
move.w #35000,d7
bsr delay
dbf d6,fo
* move.w #$2400,sr
rts
fadein:
move.w #$2000,sr
lea finlist,a6
move.w #7,d6
fi:
move.l (a6)+,-(sp)
move.w #6,-(sp)
trap #14
addq.l #6,sp
move.w #35000,d7
bsr delay
dbf d6,fi
* move.w #$2400,sr
rts
fadecount: blk.w 1,0
foutlist: dc.l fade1,fade2,fade3,fade4,fade5,fade6,fade7
finlist: dc.l fade7,fade6,fade5,fade4,fade3,fade2,fade1,palette
*******************************************************
bubblestuff:
* bsr fadeout
jsr loadballs
move.w #1,dopr
move.w #0,ballhits
move.w #1,dopr
move.w #162,mmax
move.w #0,mmin
move.w #0,mmax2
move.w #162,mmin2
move.w #-1,b1
move.w #-1,b2
move.w #-1,b3
move.w #-1,b4
move.w #-1,b5
move.w #-1,b6
move.w #-1,b7
move.w #80,mx
bsr copyscr
bsr flip_scr
bsr copyscr
bsr flip_scr
bsr fadein
bloop:
bsr copyscr
bsr putsp
bsr bdrop
bsr shoot2
bsr amidead
bsr amidead
bsr flip_scr
bsr keyboard
bsr putnums
cmpi.w #30,ballhits
bge bbloop2
cmpi.w #10,brhits
bge bbloop
bra bloop
bbloop:
* subq #1,level
bsr boom
bbl: tst.b inuse
bne bbl
bsr laugh
bra skipb
bbloop2:
* subq #1,level
bsr reward
bra skipb
ballhits: blk.w 1,0
******************************************
bdrop:
bub1:
tst.w b1
bpl bub1move
move.l #100,d0
bsr randomplus
cmpi.w #1,d0
bgt bub2
move.w #1,b1
move.w #0,bub1y
move.w #159,d0
bsr randomplus
add.w #25,d0
move.w d0,bub1x
bub1move:
addq.w #1,bub1y
move.w bub1x,spblock
move.w bub1y,spblock+2
move.w #16,spblock+4
move.w #1,spblock+6
move.l #gtemp,spblock+12
move.w #1,spblock+26
move.l #gmask,spblock+38
move.l #bubble,spblock+8
move.l #b1,a0
bsr bubout
bsr shotsp
bub2:
tst.w b2
bpl bub2move
move.l #100,d0
bsr randomplus
cmpi.w #1,d0
bgt bub3
move.w #1,b2
move.w #0,bub2y
move.w #159,d0
bsr randomplus
add.w #25,d0
move.w d0,bub2x
bub2move:
addq.w #2,bub2y
move.w bub2x,spblock
move.w bub2y,spblock+2
move.w #16,spblock+4
move.w #1,spblock+6
move.l #gtemp,spblock+12
move.w #1,spblock+26
move.l #gmask,spblock+38
move.l #bubble,spblock+8
move.l #b2,a0
bsr bubout
bsr shotsp
bub3:
tst.w b3
bpl bub3move
move.l #100,d0
bsr randomplus
cmpi.w #1,d0
bgt bub4
move.w #1,b3
move.w #0,bub3y
move.w #159,d0
bsr randomplus
add.w #25,d0
move.w d0,bub3x
bub3move:
addq.w #1,bub3y
move.w bub3x,spblock
move.w bub3y,spblock+2
move.w #16,spblock+4
move.w #1,spblock+6
move.l #gtemp,spblock+12
move.w #1,spblock+26
move.l #gmask,spblock+38
move.l #bubble,spblock+8
move.l #b3,a0
bsr bubout
bsr shotsp
bub4:
tst.w b4
bpl bub4move
move.l #100,d0
bsr randomplus
cmpi.w #1,d0
bgt bub5
move.w #1,b4
move.w #0,bub4y
move.w #159,d0
bsr randomplus
add.w #25,d0
move.w d0,bub4x
bub4move:
addq.w #2,bub4y
move.w bub4x,spblock
move.w bub4y,spblock+2
move.w #16,spblock+4
move.w #1,spblock+6
move.l #gtemp,spblock+12
move.w #1,spblock+26
move.l #gmask,spblock+38
move.l #bubble,spblock+8
move.l #b4,a0
bsr bubout
bsr shotsp
bub5:
tst.w b5
bpl bub5move
move.l #100,d0
bsr randomplus
cmpi.w #1,d0
bgt bub6
move.w #1,b5
move.w #0,bub5y
move.w #159,d0
bsr randomplus
add.w #25,d0
move.w d0,bub5x
bub5move:
addq.w #1,bub5y
move.w bub5x,spblock
move.w bub5y,spblock+2
move.w #16,spblock+4
move.w #1,spblock+6
move.l #gtemp,spblock+12
move.w #1,spblock+26
move.l #gmask,spblock+38
move.l #bubble,spblock+8
move.l #b5,a0
bsr bubout
bsr shotsp
bub6:
tst.w b6
bpl bub6move
move.l #100,d0
bsr randomplus
cmpi.w #1,d0
bgt bub7
move.w #1,b6
move.w #0,bub6y
move.w #159,d0
bsr randomplus
add.w #25,d0
move.w d0,bub6x
bub6move:
addq.w #2,bub6y
move.w bub6x,spblock
move.w bub6y,spblock+2
move.w #16,spblock+4
move.w #1,spblock+6
move.l #gtemp,spblock+12
move.w #1,spblock+26
move.l #gmask,spblock+38
move.l #bubble,spblock+8
move.l #b6,a0
bsr bubout
bsr shotsp
bub7:
tst.w b7
bpl bub7move
move.l #100,d0
bsr randomplus
cmpi.w #1,d0
bgt bub8
move.w #1,b7
move.w #0,bub7y
move.w #159,d0
bsr randomplus
add.w #25,d0
move.w d0,bub7x
bub7move:
addq.w #1,bub7y
move.w bub7x,spblock
move.w bub7y,spblock+2
move.w #16,spblock+4
move.w #1,spblock+6
move.l #gtemp,spblock+12
move.w #1,spblock+26
move.l #gmask,spblock+38
move.l #bubble,spblock+8
move.l #b7,a0
bsr bubout
bsr shotsp
bub8:
rts
******************************************
b1: blk.w 1,-1
bub1x: blk.w 1,0
bub1y: blk.w 1,0
b2: blk.w 1,-1
bub2x: blk.w 1,0
bub2y: blk.w 1,0
b3: blk.w 1,-1
bub3x: blk.w 1,0
bub3y: blk.w 1,0
b4: blk.w 1,-1
bub4x: blk.w 1,0
bub4y: blk.w 1,0
b5: blk.w 1,-1
bub5x: blk.w 1,0
bub5y: blk.w 1,0
b6: blk.w 1,-1
bub6x: blk.w 1,0
bub6y: blk.w 1,0
b7: blk.w 1,-1
bub7x: blk.w 1,0
bub7y: blk.w 1,0
****************************************
bubout:
cmpi.w #184,spblock+2
blt buboutb
move.w #-1,(a0)
move.w #10,brhits
subq.w #1,ships
move.b #1,dopr
buboutb:
rts
**************************************
attack:
cmpi.w #4,level
ble na
tst.w attacker
bmi noattack
bra isattack
noattack:
move.l #100,d0
bsr randomplus
cmpi.w #1,d0
bge na
bsr appear
move.w #1,attacker
move.l #3,d0
bsr randomplus
addq.w #1,d0
move.w d0,atyvel
move.l #3,d0
bsr randomplus
addq.w #1,d0
move.w d0,atxvel
move.w #112,atx
move.w #99,aty
move.w #0,atani
isattack:
move.w atxvel,d0
add.w d0,atx
move.w atx,spblock
move.w atyvel,d0
add.w d0,aty
move.w aty,spblock+2
move.w #16,spblock+4
move.w #1,spblock+6
move.l #gtemp,spblock+12
move.w #1,spblock+26
move.l #gmask,spblock+38
bsr attackani
bsr atmaths
bsr shotsp
na: rts
attacker:
blk.w 1,0
atyvel: blk.w 1,0
atxvel: blk.w 1,0
atx: blk.w 1,0
aty: blk.w 1,0
atani: blk.w 1,0
******************************
attackani:
move.l #0,d0
move.w atani,d0
mulu #4,d0
lea atlist,a0
move.l (a0,d0.w),spblock+8
* move.l #balls3,spblock+8
addq.w #1,atani
cmpi.w #21,atani
blt atnb
move.w #0,atani
atnb:
rts
atlist:
dc.l balls1,balls2,balls3,balls4,balls5,balls6,balls7
dc.l balls8,balls9,balls10,balls11,balls12,balls13,balls14
dc.l balls15,balls16,balls17,balls18,balls19,balls20,balls21
*******************************
atmaths:
move.w atx,d0
move.w aty,d1
add.w atxvel,d0
add.w atyvel,d1
cmpi.w #4,d0
bgt atm1
neg atxvel
bra chkhit1
atm1:
cmpi.w #208,d0
blt atm2
neg atxvel
bra chkhit3
atm2:
cmpi.w #4,d1
bgt atm3
neg atyvel
bra chkhit2
atm3:
cmpi.w #180,d1
blt atm4
neg atyvel
bra chkhit4
atm4:
rts
chkhit1:
cmpi.w #1,whsp
bne ch1b
move.w shipy,d0
sub.w #16,d0
cmp.w aty,d0
bgt ch1b
add.w #48,d0
cmp.w aty,d0
blt ch1b
move.w #1,hesdead
ch1b: rts
chkhit2:
cmpi.w #2,whsp
bne ch2b
move.w shipx,d0
sub.w #16,d0
cmp.w atx,d0
bgt ch2b
add.w #48,d0
cmp.w atx,d0
blt ch2b
move.w #1,hesdead
ch2b: rts
chkhit3:
cmpi.w #3,whsp
bne ch3b
move.w shipy,d0
sub.w #16,d0
cmp.w aty,d0
bgt ch3b
add.w #48,d0
cmp.w aty,d0
blt ch3b
move.w #1,hesdead
ch3b: rts
chkhit4:
cmpi.w #0,whsp
bne ch4b
move.w shipx,d0
sub.w #16,d0
cmp.w atx,d0
bgt ch4b
add.w #48,d0
cmp.w atx,d0
blt ch4b
move.w #1,hesdead
ch4b: rts
**********************************************************
blowitup:
move.w #1,dopr
bsr bigboomsound
move.w #30,d7
bip:
move.w d7,-(sp)
move.l screen3,a0
add.l #13328,a0
move.w #31,d6
bip1:
move.w #%0111111111111111,d0
bsr random
move.w d0,(a0)+
move.w #0,(a0)+
move.w #0,(a0)+
move.w #0,(a0)+
move.w #0111111111111111,d0
bsr random
move.w d0,(a0)+
move.w #0,(a0)+
move.w #0,(a0)+
move.w #0,(a0)+
add.l #144,a0
dbf d6,bip1
bsr copyscr
bsr blowani
add.w #-2,b1x
move.w b1x,spblock ;\
add.w #-2,b1y
move.w b1y,spblock+2
move.w #16,spblock+4
move.w #1,spblock+6
move.l #gtemp,spblock+12
move.w #1,spblock+26
move.l #gmask,spblock+38
bsr shotsp
add.w #0,b2x
move.w b2x,spblock ;|
add.w #-3,b2y
move.w b2y,spblock+2
move.w #16,spblock+4
move.w #1,spblock+6
move.l #gtemp,spblock+12
move.w #1,spblock+26
move.l #gmask,spblock+38
bsr shotsp
add.w #2,b3x
move.w b3x,spblock ;/
add.w #-2,b3y
move.w b3y,spblock+2
move.w #16,spblock+4
move.w #1,spblock+6
move.l #gtemp,spblock+12
move.w #1,spblock+26
move.l #gmask,spblock+38
bsr shotsp
add.w #3,b4x
move.w b4x,spblock ;-
add.w #0,b4y
move.w b4y,spblock+2
move.w #16,spblock+4
move.w #1,spblock+6
move.l #gtemp,spblock+12
move.w #1,spblock+26
move.l #gmask,spblock+38
bsr shotsp
add.w #2,b5x
move.w b5x,spblock ;\
add.w #2,b5y
move.w b5y,spblock+2
move.w #16,spblock+4
move.w #1,spblock+6
move.l #gtemp,spblock+12
move.w #1,spblock+26
move.l #gmask,spblock+38
bsr shotsp
add.w #0,b6x
move.w b6x,spblock ;|
add.w #3,b6y
move.w b6y,spblock+2
move.w #16,spblock+4
move.w #1,spblock+6
move.l #gtemp,spblock+12
move.w #1,spblock+26
move.l #gmask,spblock+38
bsr shotsp
add.w #-2,b7x
move.w b7x,spblock ;/
add.w #2,b7y
move.w b7y,spblock+2
move.w #16,spblock+4
move.w #1,spblock+6
move.l #gtemp,spblock+12
move.w #1,spblock+26
move.l #gmask,spblock+38
bsr shotsp
add.w #-3,b8x
move.w b8x,spblock ;-
add.w #0,b8y
move.w b8y,spblock+2
move.w #16,spblock+4
move.w #1,spblock+6
move.l #gtemp,spblock+12
move.w #1,spblock+26
move.l #gmask,spblock+38
bsr shotsp
bsr putnums
bsr flip_scr
bsr keyboard
move.w (sp)+,d7
dbf d7,bip
bsr pay
pwait:
tst.b inuse
bne pwait
rts
blowani:
move.l #0,d0
move.w blani,d0
mulu #4,d0
lea bllist,a0
move.l (a0,d0.w),spblock+8
addq.w #1,blani
cmpi.w #3,blani
blt bl
move.w #0,blani
bl:
rts
bllist: dc.l gore1,gore2,gore3
blani: blk.w 1,0
b1x: blk.w 1,0
b1y: blk.w 1,0
b2x: blk.w 1,0
b2y: blk.w 1,0
b3x: blk.w 1,0
b3y: blk.w 1,0
b4x: blk.w 1,0
b4y: blk.w 1,0
b5x: blk.w 1,0
b5y: blk.w 1,0
b6x: blk.w 1,0
b6y: blk.w 1,0
b7x: blk.w 1,0
b7y: blk.w 1,0
b8x: blk.w 1,0
b8y: blk.w 1,0
**************************************
battack:
cmpi.w #8,level
ble bna
tst.w battacker
bmi bnoattack
bra bisattack
bnoattack:
move.l #100,d0
bsr randomplus
cmpi.w #1,d0
bge bna
bsr appear
move.w #1,battacker
move.l #3,d0
bsr randomplus
addq.w #1,d0
move.w d0,batyvel
move.l #3,d0
bsr randomplus
addq.w #1,d0
move.w d0,batxvel
move.w #112,batx
move.w #99,baty
move.w #0,batani
bisattack:
move.w batxvel,d0
add.w d0,batx
move.w batx,spblock
move.w batyvel,d0
add.w d0,baty
move.w baty,spblock+2
move.w #16,spblock+4
move.w #1,spblock+6
move.l #gtemp,spblock+12
move.w #1,spblock+26
move.l #gmask,spblock+38
bsr battackani
bsr batmaths
bsr shotsp
bna: rts
battacker:
blk.w 1,0
batyvel: blk.w 1,0
batxvel: blk.w 1,0
batx: blk.w 1,0
baty: blk.w 1,0
batani: blk.w 1,0
******************************
battackani:
move.l #0,d0
move.w batani,d0
mulu #4,d0
lea atlist,a0
move.l (a0,d0.w),spblock+8
* move.l #balls3,spblock+8
addq.w #1,batani
cmpi.w #21,batani
blt batnb
move.w #0,batani
batnb:
rts
*******************************
batmaths:
move.w batx,d0
move.w baty,d1
add.w batxvel,d0
add.w batyvel,d1
cmpi.w #4,d0
bgt batm1
neg batxvel
bra bchkhit1
rts
batm1:
cmpi.w #208,d0
blt batm2
neg batxvel
bra bchkhit3
rts
batm2:
cmpi.w #4,d1
bgt batm3
neg batyvel
bra bchkhit2
rts
batm3:
cmpi.w #180,d1
blt batm4
neg batyvel
bra bchkhit4
rts
batm4:
rts
bchkhit1:
cmpi.w #1,whsp
bne bch1b
move.w shipy,d0
sub.w #16,d0
cmp.w baty,d0
bgt bch1b
add.w #48,d0
cmp.w baty,d0
blt bch1b
move.w #1,hesdead
bch1b: rts
bchkhit2:
cmpi.w #2,whsp
bne bch2b
move.w shipx,d0
sub.w #16,d0
cmp.w batx,d0
bgt bch2b
add.w #48,d0
cmp.w batx,d0
blt bch2b
move.w #1,hesdead
bch2b: rts
bchkhit3:
cmpi.w #3,whsp
bne bch3b
move.w shipy,d0
sub.w #16,d0
cmp.w baty,d0
bgt bch3b
add.w #48,d0
cmp.w baty,d0
blt bch3b
move.w #1,hesdead
bch3b: rts
bchkhit4:
cmpi.w #0,whsp
bne bch4b
move.w shipx,d0
sub.w #16,d0
cmp.w batx,d0
bgt bch4b
add.w #48,d0
cmp.w batx,d0
blt bch4b
move.w #1,hesdead
bch4b: rts
remember: blk.w 1,-1
bigavail: blk.w 1,-1
break: blk.w 1,-1
**********************************
*******************************
prebreakout:
jsr loadcorners
bsr putfirst
bsr fadein
move.w #1,dopr
move.w #1,break
move.w #0,blockout
move.l #bat0,wship0
move.l #bat1,wship1
move.l #bat2,wship2
move.l #bat3,wship3
tst.w bigavail
bmi preb
move.w #1,remember
move.w #-1,bigavail
preb:
bsr copyscr
bsr putnums
bsr putsp
move.w #1,sw
move.w #5,sh
move.w shipx,d0
move.w shipy,d1
tst.w whsp
bne ps1
add.w #16,d0
subq.w #5,d1
move.w #-2,hotxvel
move.w #-2,hotyvel
bra psback
ps1:
cmpi.w #1,whsp
bne ps2
add.w #16,d1
add.w #10,d0
move.w #2,hotxvel
move.w #-2,hotyvel
bra psback
ps2:
cmpi.w #2,whsp
bne ps3
add.w #12,d0
add.w #11,d1
move.w #2,hotxvel
move.w #2,hotyvel
bra psback
ps3:
subq.w #6,d0
add.w #11,d1
move.w #-2,hotxvel
move.w #2,hotyvel
psback: move.w d0,hootx
move.w d1,hooty
bsr doball
bsr flip_scr
tst.w buttondat
bne breakout
bra preb
breakout:
move.l #bat0,wship0
move.l #bat1,wship1
move.l #bat2,wship2
move.l #bat3,wship3
bsr copyscr
bsr putsp
bsr doball
bsr shoot
bsr amidead
bsr putnums
bsr flip_scr
bsr keyboard
tst.w sdead
bpl psk
cmpi.w #10,brhits
bge prenextlev
cmpi.w #48,blockout
bge bout
bra breakout
prenextlev:
tst.w remember
bmi pnlb
move.w #1,bigavail
bsr weapons
pnlb:
move.w #-1,remember
bra nextlev
bout:
move.w #1,bigavail
move.w #1,remember
bra prenextlev
psk:
tst.w remember
bmi spnlb
move.w #1,bigavail
bsr weapons
spnlb:
move.w #-1,remember
move.w #-1,sdead
bra skipb
***************************
doball:
move.w sh,spblock+4
move.w sw,spblock+6
move.l #ball,spblock+8
move.l #gtemp,spblock+12
move.w sw,spblock+26
move.l #gmask,spblock+38
bra maths
imback: move.l #0,d0
move.l #0,d1
move.l ptsin,a0
move.w hootx,d0
move.w hooty,d1
add.w hotxvel,d0
add.w hotyvel,d1
* add.w hotxvel,d0
* add.w hotyvel,d1
move.w d0,(a0)
move.w d1,2(a0)
add.w #2,(a0)
dc.w getpix
tst.w d0
beq ball1
neg hotyvel
bsr hitablock2
bra ball4
ball1:
move.l ptsin,a0
add.w #2,(a0)
add.w #2,2(a0)
dc.w getpix
tst.w d0
beq ball2
neg hotxvel
bsr hitablock2
bra ball4
ball2:
move.l ptsin,a0
sub.w #2,(a0)
add.w #2,2(a0)
dc.w getpix
tst.w d0
beq ball3
neg hotyvel
bsr hitablock2
bra ball4
ball3:
move.l ptsin,a0
sub.w #2,(a0)
sub.w #2,2(a0)
dc.w getpix
tst.w d0
beq ball4
neg hotxvel
bsr hitablock2
ball4:
move.w hotxvel,d7
add.w d7,hootx
move.w hootx,spblock
move.w hotyvel,d7
add.w d7,hooty
move.w hooty,spblock+2
bsr shotsp
rts
sdead: blk.w 1,-1
*******************************
mathover:
bsr boom
move.w #13,d0
move.l pa,a0
move.l #boomcols,a1
mo2: move.w (a1)+,pa
move.w #50000,d7
bsr delay
dbf d0,mo2
move.w #1,sdead
bra ball4
maths:
move.w hootx,d0
move.w hooty,d1
add.w hotxvel,d0
add.w hotyvel,d1
addq.w #2,d0
addq.w #2,d1
cmpi.w #12,d0
bge m1
bra hkhit1
m1:
cmpi.w #212,d0
ble m2
bra hkhit3
m2:
cmpi.w #12,d1
bge m3
bra hkhit2
m3:
cmpi.w #187,d1
ble m4
bra hkhit4
m4:
bra imback
hkhit1:
cmpi.w #1,whsp
bne h1b
move.w shipy,d2
sub.w #4,d2
cmp.w d1,d2
bgt h1b
add.w #36,d2
cmp.w d1,d2
blt h1b
neg hotxvel
bra ball4
h1b:
cmpi.w #26,d1
blt hh1
cmpi.w #173,d1
blt h1c
hh1: neg hotxvel
bra ball4
h1c: bra mathover
hkhit2:
cmpi.w #2,whsp
bne h2b
move.w shipx,d2
sub.w #4,d2
cmp.w d0,d2
bgt h2b
add.w #36,d2
cmp.w d0,d2
blt h2b
neg hotyvel
bra ball4
h2b:
cmpi.w #26,d0
blt hh2
cmpi.w #198,d0
blt h2c
hh2: neg hotyvel
bra ball4
h2c: bra mathover
hkhit3:
cmpi.w #3,whsp
bne h3b
move.w shipy,d2
sub.w #4,d2
cmp.w d1,d2
bgt h3b
add.w #36,d2
cmp.w d1,d2
blt h3b
neg hotxvel
bra ball4
h3b:
cmpi.w #26,d1
blt hh3
cmpi.w #173,d1
blt h3c
hh3: neg hotxvel
bra ball4
h3c: bra mathover
hkhit4:
cmpi.w #0,whsp
bne h4b
move.w shipx,d2
sub.w #4,d2
cmp.w d0,d2
bgt h4b
add.w #36,d2
cmp.w d0,d2
blt h4b
neg hotyvel
bra ball4
h4b:
cmpi.w #26,d0
blt hh4
cmpi.w #198,d0
blt h4c
hh4: neg hotyvel
bra ball4
h4c: bra mathover
hotxvel: blk.w 1,0
hotyvel: blk.w 1,0
hootx: blk.w 1,0
hooty: blk.w 1,0
*******************************
pa: equ $ff8240
amidead:
tst.w hesdead
bmi adback
bsr deadboom
bsr head
bra amd3
amd1: move.w #13,d0
move.l pa,a0
move.l #boomcols,a1
amd2: move.w (a1)+,pa
move.w #50000,d7
bsr delay
dbf d0,amd2
amd3: subq.w #1,ships
cmpi.w #0,ships
ble alldead
bsr fadeout
move.w #-1,hesdead
move.w #1,dopr
move.w #-1,byebye
move.w #-1,bigflg
move.w #-1,shooting
move.w #-1,attacker
move.w #-1,battacker
bsr copyintoboth
bsr putfirst
bsr copyscr
bsr flip_scr
bsr copyscr
bsr fadein
bsr pregrow
tst.w remember
bmi amd4
move.w #1,bigavail
amd4:
move.w #-1,remember
rts
adback: rts
alldead:
jmp ftf
delay: dbf d7,delay
rts
*13328
head:
move.l #appear1,a1
bsr putheads
bsr copyscr
bsr flip_scr
move.w hd,d7
bsr delay
move.l #appear2,a1
bsr putheads
bsr copyscr
bsr flip_scr
move.w hd,d7
bsr delay
move.l #appear3,a1
bsr putheads
bsr copyscr
bsr flip_scr
move.w hd,d7
bsr delay
move.l #appear4,a1
bsr putheads
bsr copyscr
bsr flip_scr
move.w hd,d7
bsr delay
move.l #appear5,a1
bsr putheads
bsr copyscr
bsr flip_scr
move.w hd,d7
bsr delay
move.l #appear6,a1
bsr putheads
bsr copyscr
bsr flip_scr
move.w hd,d7
bsr delay
move.l #appear7,a1
bsr putheads
bsr copyscr
bsr flip_scr
move.w hd,d7
bsr delay
move.l #face1,a1
bsr putheads
bsr copyscr
bsr flip_scr
move.w hd,d7
bsr delay
mhlaugh:
bsr laugh
move.w #10,d7
ml:
move.w d7,-(sp)
bsr headani
bsr putheads
bsr copyscr
bsr flip_scr
move.w #50000,d7
bsr delay
move.w (sp)+,d7
dbf d7,ml
rts
headani:
move.l #0,d0
move.w hdani,d0
mulu #4,d0
lea headlist,a0
move.l (a0,d0.w),a1
addq.w #1,hdani
cmpi.w #3,hdani
blt hl
move.w #0,hdani
hl:
rts
headlist:
dc.l face1,face2,face3
dc.l face4
hdani: blk.w 1,0
hd: blk.w 1,40000
*****************************************
* expects a1 to have ad of sprite *
*****************************************
putheads:
move.l screen3,a0
add.l #13328,a0
move.w #31,d0
ph:
move.l (a1)+,(a0)+
move.l (a1)+,(a0)+
move.l (a1)+,(a0)+
move.l (a1)+,(a0)+
add.l #144,a0
dbf d0,ph
rts
deadboom:
bsr boom
move.w #-1,bigavail
tst.w whsp
bne db1
move.w shipx,bl1x
move.w shipy,bl1y
move.w shipx,bl2x
move.w shipy,bl2y
move.w shipx,bl3x
move.w shipy,bl3y
addq.w #8,bl3x
move.w #20,d0
dba0:
move.w d0,-(sp)
bsr copyscr
add.w #-2,bl1x
move.w bl1x,spblock ;\
add.w #-2,bl1y
move.w bl1y,spblock+2
move.w #10,spblock+4
move.w #1,spblock+6
move.l #bl1s1,spblock+8
move.l #gtemp,spblock+12
move.w #1,spblock+26
move.l #gmask,spblock+38
bsr shotsp
add.w #0,bl2x
move.w bl2x,spblock ;\
add.w #-3,bl2y
move.w bl2y,spblock+2
move.w #9,spblock+4
move.w #1,spblock+6
move.l #bl1s2,spblock+8
move.l #gtemp,spblock+12
move.w #1,spblock+26
move.l #gmask,spblock+38
bsr shotsp
add.w #2,bl3x
move.w bl3x,spblock ;\
add.w #-2,bl3y
move.w bl3y,spblock+2
move.w #10,spblock+4
move.w #1,spblock+6
move.l #bl1s3,spblock+8
move.l #gtemp,spblock+12
move.w #1,spblock+26
move.l #gmask,spblock+38
bsr shotsp
bsr flip_scr
move.w (sp)+,d0
dbf d0,dba0
rts
db1:
cmpi.w #1,whsp
bne db2
move.w shipx,bl1x
move.w shipy,bl1y
move.w shipx,bl2x
move.w shipy,bl2y
move.w shipx,bl3x
move.w shipy,bl3y
addq.w #8,bl3y
move.w #20,d0
dba1:
move.w d0,-(sp)
bsr copyscr
add.w #2,bl1x
move.w bl1x,spblock ;\
add.w #-2,bl1y
move.w bl1y,spblock+2
move.w #7,spblock+4
move.w #1,spblock+6
move.l #bl4s1,spblock+8
move.l #gtemp,spblock+12
move.w #1,spblock+26
move.l #gmask,spblock+38
bsr shotsp
add.w #3,bl2x
move.w bl2x,spblock ;\
add.w #0,bl2y
move.w bl2y,spblock+2
move.w #16,spblock+4
move.w #1,spblock+6
move.l #bl4s2,spblock+8
move.l #gtemp,spblock+12
move.w #1,spblock+26
move.l #gmask,spblock+38
bsr shotsp
add.w #2,bl3x
move.w bl3x,spblock ;\
add.w #2,bl3y
move.w bl3y,spblock+2
move.w #7,spblock+4
move.w #1,spblock+6
move.l #bl4s3,spblock+8
move.l #gtemp,spblock+12
move.w #1,spblock+26
move.l #gmask,spblock+38
bsr shotsp
bsr flip_scr
move.w (sp)+,d0
dbf d0,dba1
rts
db2:
cmpi.w #2,whsp
bne db3
move.w shipx,bl1x
move.w shipy,bl1y
move.w shipx,bl2x
move.w shipy,bl2y
move.w shipx,bl3x
move.w shipy,bl3y
add.w #16,bl1x
add.w #16,bl2x
add.w #24,bl3x
move.w #20,d0
dba2:
move.w d0,-(sp)
bsr copyscr
add.w #2,bl1x
move.w bl1x,spblock ;\
add.w #2,bl1y
move.w bl1y,spblock+2
move.w #10,spblock+4
move.w #1,spblock+6
move.l #bl3s3,spblock+8
move.l #gtemp,spblock+12
move.w #1,spblock+26
move.l #gmask,spblock+38
bsr shotsp
add.w #0,bl2x
move.w bl2x,spblock ;\
add.w #3,bl2y
move.w bl2y,spblock+2
move.w #9,spblock+4
move.w #1,spblock+6
move.l #bl3s2,spblock+8
move.l #gtemp,spblock+12
move.w #1,spblock+26
move.l #gmask,spblock+38
bsr shotsp
add.w #-2,bl3x
move.w bl3x,spblock ;\
add.w #2,bl3y
move.w bl3y,spblock+2
move.w #10,spblock+4
move.w #1,spblock+6
move.l #bl3s1,spblock+8
move.l #gtemp,spblock+12
move.w #1,spblock+26
move.l #gmask,spblock+38
bsr shotsp
bsr flip_scr
move.w (sp)+,d0
dbf d0,dba2
rts
db3:
cmpi.w #3,whsp
bne db4
move.w shipx,bl1x
move.w shipy,bl1y
move.w shipx,bl2x
move.w shipy,bl2y
move.w shipx,bl3x
move.w shipy,bl3y
add.w #8,bl1y
add.w #8,bl2y
add.w #16,bl3y
sub.w #5,bl1x
sub.w #5,bl2x
sub.w #5,bl3x
move.w #20,d0
dba3:
move.w d0,-(sp)
bsr copyscr
add.w #-2,bl1x
move.w bl1x,spblock ;\
add.w #-2,bl1y
move.w bl1y,spblock+2
move.w #7,spblock+4
move.w #1,spblock+6
move.l #bl2s1,spblock+8
move.l #gtemp,spblock+12
move.w #1,spblock+26
move.l #gmask,spblock+38
bsr shotsp
add.w #-3,bl2x
move.w bl2x,spblock ;\
add.w #0,bl2y
move.w bl2y,spblock+2
move.w #16,spblock+4
move.w #1,spblock+6
move.l #bl2s2,spblock+8
move.l #gtemp,spblock+12
move.w #1,spblock+26
move.l #gmask,spblock+38
bsr shotsp
add.w #-2,bl3x
move.w bl3x,spblock ;\
add.w #2,bl3y
move.w bl3y,spblock+2
move.w #7,spblock+4
move.w #1,spblock+6
move.l #bl2s3,spblock+8
move.l #gtemp,spblock+12
move.w #1,spblock+26
move.l #gmask,spblock+38
bsr shotsp
bsr flip_scr
move.w (sp)+,d0
dbf d0,dba3
rts
db4: rts
hesdead: blk.w 1,-1
bl1x: blk.w 1,0
bl1y: blk.w 1,0
bl2x: blk.w 1,0
bl2y: blk.w 1,0
bl3x: blk.w 1,0
bl3y: blk.w 1,0
********************************************************
* Now for some fire power
* this will be the standard shot
********************************************************
shoot:
tst.w shooting
bmi newshot
normshot:
cmpi.w #1,shooting
bne bigshoot
move.l ptsin,a0
move.w shootx,d0
add.w shotxvel,d0
move.w d0,(a0)
move.w d0,shootx
move.w shooty,d0
add.w shotyvel,d0
move.w d0,2(a0)
move.w d0,shooty
bra fitit
nsb: dc.w getpix
tst.w d0
bne hitablock
move.w shootx,pixelx
move.w shooty,pixely
move.w #1,pixelcolor
bsr myplot
addq.w #1,pixely
bsr myplot
ns: rts
bigshoot:
cmpi.w #2,shooting
bne noshoot
move.w shotxvel,d0
add.w d0,shootx
move.w shootx,spblock
move.w shotyvel,d0
add.w d0,shooty
move.w shooty,spblock+2
move.w sh,spblock+4
move.w sw,spblock+6
move.l stype,spblock+8
move.l #gtemp,spblock+12
move.w #1,spblock+26
move.l #gmask,spblock+38
bsr bfitit
tst.w d7
bmi noshoot
bsr shotsp
move.l ptsin,a0
move.w shootx,d0
move.w shooty,d1
add.w bigx,d0
add.w bigy,d1
move.w d0,(a0)
move.w d1,2(a0)
dc.w getpix
tst.w d0
bne hitablockb
noshoot:
rts
noshoot2:
move.w #-1,shooting
rts
gtemp: blk.w 200,0
spblock: blk.w 50,0
gmask: blk.w 200,0
stype: blk.l 1,0
sh: blk.w 1,0
sw: blk.w 1,0
bigx: blk.w 1,0
bigy: blk.w 1,0
bigcount: blk.w 1,0
newshot:
cmpi.w #1,buttondat
bne newshot2
bsr litshot
move.w shipx,d0
move.w shipy,d1
tst.w whsp
bne ns1
add.w #15,d0
subq.w #2,d1
move.w #0,shotxvel
move.w #-6,shotyvel
bra nsback
ns1:
cmpi.w #1,whsp
bne ns2
add.w #15,d1
add.w #10,d0
move.w #6,shotxvel
move.w #0,shotyvel
bra nsback
ns2:
cmpi.w #2,whsp
bne ns3
add.w #15,d0
add.w #12,d1
move.w #0,shotxvel
move.w #6,shotyvel
bra nsback
ns3:
subq.w #2,d0
add.w #15,d1
move.w #-6,shotxvel
move.w #0,shotyvel
nsback: move.w d0,shootx
move.w d1,shooty
move.w #1,shooting ;denote that it is a normal shot
rts
newshot2:
tst.w bigavail
bmi shootback2
cmpi.w #2,buttondat
bne shootback2
ns2a:
cmpi.w #2,buttondat
bne dobis
addq.w #2,strength
bsr copyscr
bsr smallgrow
bsr putsp
bsr bbani
bsr brainy
bsr animboom
bsr dopanel
bsr attack
bsr battack
bsr flip_scr
bra ns2a
dobis:
bsr bigshot
move.l #0,d0
move.w strength,d0
divu #10,d0
move.w d0,bigcount
add.w d0,score
move.w #1,dopr
move.w #0,strength
move.w shipx,d0
move.w shipy,d1
tst.w whsp
bne nns1
move.l #upshot,stype
move.w #1,sw
move.w #$d,sh
add.w #13,d0
sub.w #4,d1
move.w #2,bigx
move.w #-1,bigy
move.w #0,shotxvel
move.w #-6,shotyvel
bra shootback
nns1:
cmpi.w #1,whsp
bne nns2
move.l #rightshot,stype
move.w #1,sw
move.w #5,sh
add.w #13,d1
add.w #10,d0
move.w #$e,bigx
move.w #2,bigy
move.w #6,shotxvel
move.w #0,shotyvel
bra shootback
nns2:
cmpi.w #2,whsp
bne nns3
move.l #downshot,stype
move.w #1,sw
move.w #$d,sh
add.w #13,d0
add.w #12,d1
move.w #2,bigx
move.w #$e,bigy
move.w #0,shotxvel
move.w #6,shotyvel
bra shootback
nns3:
move.l #leftshot,stype
move.w #1,sw
move.w #5,sh
subq.w #3,d0
add.w #13,d1
move.w #-1,bigx
move.w #2,bigy
move.w #-6,shotxvel
move.w #0,shotyvel
shootback:
move.w d0,shootx
move.w d1,shooty
move.w #2,shooting ;denote that it is a normal shot
rts
shootback2:
rts
******************************************************
shoot2:
tst.w shooting
bmi newshots
normshot2:
move.l ptsin,a0
move.w shootx,d0
add.w shotxvel,d0
move.w d0,(a0)
move.w d0,shootx
move.w shooty,d0
add.w shotyvel,d0
move.w d0,2(a0)
move.w d0,shooty
bra gfitit
gnsb: dc.w getpix
cmpi.w #14,d0
bge itsahit
move.w shootx,pixelx
move.w shooty,pixely
move.w #1,pixelcolor
bsr myplot
addq.w #1,pixely
bsr myplot
gns: rts
newshots:
cmpi.w #1,buttondat
bne newshots2
bsr litshot
move.w shipx,d0
move.w shipy,d1
add.w #15,d0
subq.w #2,d1
move.w #0,shotxvel
move.w #-6,shotyvel
gnsback:
move.w d0,shootx
move.w d1,shooty
move.w #1,shooting ;denote that it is a normal shot
rts
newshots2:
rts
gfitit:
cmpi.w #5,shooty
bgt gnsb
move.w #-1,shooting
bra gns
*************************************************
* the old have I hit a bubble routine *
*************************************************
itsahit:
* cmpi.w #14,d0
* blt itsahitb
move.w #-1,shooting
move.w bub1x,d0
move.w bub1y,d1
lea b1,a0
bsr chkit
move.w bub2x,d0
move.w bub2y,d1
lea b2,a0
bsr chkit
move.w bub3x,d0
move.w bub3y,d1
lea b3,a0
bsr chkit
move.w bub4x,d0
move.w bub4y,d1
lea b4,a0
bsr chkit
move.w bub5x,d0
move.w bub5y,d1
lea b5,a0
bsr chkit
move.w bub6x,d0
move.w bub6y,d1
lea b6,a0
bsr chkit
move.w bub7x,d0
move.w bub7y,d1
lea b7,a0
bsr chkit
bra gns
rts
chkit:
move.w d0,spblock
move.w d1,spblock+2
cmp.w shootx,d0
blt chkit2
rts
chkit2:
add.w #16,d0
cmp.w shootx,d0
bgt chkit3
rts
chkit3:
cmp.w shooty,d1
blt chkit4
rts
chkit4:
add.w #16,d1
cmp.w shooty,d1
bgt chkit5
rts
chkit5:
move.w #-1,(a0)
bsr boom
addq.w #1,ballhits
add.w #10,score
move.w #1,dopr
move.w #16,spblock+4
move.w #1,spblock+6
move.l #gtemp,spblock+12
move.w #1,spblock+26
move.l #gmask,spblock+38
move.l #pop,spblock+8
move.l #b1,a0
bsr shotsp
rts
itsahitb:
bra gns
fitit:
cmpi.w #94,shootx
blt fititback
cmpi.w #82,shooty
blt fititback
cmpi.w #128,shootx
bgt fititback
cmpi.w #114,shooty
bgt fititback
move.w #-1,shooting
addq.w #1,brhits
addq.w #8,score
move.w #1,dopr
bra ns
fititback:
cmpi.w #12,shootx
blt fititback2
cmpi.w #12,shooty
blt fititback2
cmpi.w #209,shootx
bgt fititback2
cmpi.w #185,shooty
bgt fititback2
bra nsb
fititback2:
move.w #-1,shooting
bra ns
bfitit:
move.w shootx,d0
move.w shooty,d1
add.w bigx,d0
add.w bigy,d1
cmpi.w #94,d0
blt bfititback
cmpi.w #82,d1
blt bfititback
cmpi.w #128,d0
bgt bfititback
cmpi.w #116,d1
bgt bfititback
move.w #-1,shooting
addq.w #1,brhits
addq.w #8,score
move.w #1,dopr
move.w #-1,d7
rts
bfititback:
cmpi.w #12,d0
blt bfititback2
cmpi.w #12,d1
blt bfititback2
cmpi.w #209,d0
bgt bfititback2
cmpi.w #185,d1
bgt bfititback2
rts
bfititback2:
move.w #-1,shooting
rts
strength: blk.w 1,0
********************************************************
dopanel:
cmpi.w #75,strength
blt okay
move.w #75,strength
okay: move.l hiden,a0
add.l #29712,a0
lea panel,a1
move.l (a1)+,(a0)+
move.l (a1)+,(a0)+
move.l (a1)+,(a0)+
move.l (a1)+,(a0)+
move.l (a1)+,(a0)+
move.l (a1)+,(a0)+
move.l (a1)+,(a0)+
move.l (a1)+,(a0)+
move.l (a1)+,(a0)+
move.l (a1)+,(a0)+
move.l (a1)+,(a0)+
move.l (a1)+,(a0)+
add.l #112,a0
move.l (a1)+,(a0)+
move.l (a1)+,(a0)+
move.l (a1)+,(a0)+
move.l (a1)+,(a0)+
move.l (a1)+,(a0)+
move.l (a1)+,(a0)+
move.l (a1)+,(a0)+
move.l (a1)+,(a0)+
move.l (a1)+,(a0)+
move.l (a1)+,(a0)+
move.l (a1)+,(a0)+
move.l (a1)+,(a0)+
move.l #0,d0
move.w strength,d0
* divu #2,d0
add.w #235,d0
move.l linepar,a0
move.w d0,42(a0)
move.w #235,38(a0)
move.w #185,40(a0)
move.w #0,50(a0) ;line pattern
move.l #patmsk,46(a0)
move.w #1,24(a0)
move.w #0,26(a0)
move.w #1,28(a0)
move.w #1,30(a0)
move.w #0,36(a0)
dc.w $a004
move.l linepar,a0
move.w #186,40(a0)
* move.w #0,36(a0)
dc.w $a004
rts
patmsk: dc.w $ffff
**********************************
hitablock:
cmpi.w #6,d0
ble bigboom
addq.w #1,score
move.w #1,dopr
hitab: move.l #0,d0
move.l #0,d1
move.l #0,d2
move.l #0,d3
move.l ptsin,a6
move.l screen3,a5
move.w 0(a6),d0 ;x
move.w 2(a6),d1 ;y
divu #8,d1
move.w d1,d3
mulu #8,d3
swap d1
cmpi.w #3,d1
bge ht1
subq.w #5,d3
bra ht2
ht1:
addq.w #3,d3
ht2:
move.w d3,2(a6)
mulu #160,d3 ;get ad of start of line
divu #16,d0 ;halve it
move.w d0,d2
swap d0
cmpi.w #$8,d0
blt itseveh
add #1,d3
itseveh:
mulu #8,d2
add.w d2,d3
move.w d3,hidbad
add.w d3,a5
move.l a5,blockad
move.w #5,byebye
move.w #-1,shooting
move.l #0,d0
move.l blockad,a5
move.w #7,d0
sfillh:
move.b #0,(a5)
add.l #2,a5
move.b #0,(a5)
add.l #2,a5
move.b #0,(a5)
add.l #2,a5
move.b #0,(a5)
add.l #2,a5
add.l #152,a5
dbf d0,sfillh
addq.w #1,blockout
* cmpi.w #48,blockout
* bge kb
rts
animboom:
tst.w byebye
bmi aboomback
move.l #0,d0
move.l hiden,a5
add.w hidbad,a5
move.l #animblocks,a6
move.w byebye,d0
mulu #32,d0
adda d0,a6
move.w #7,d0
sfillht:
move.b (a6)+,(a5)
add.l #2,a5
move.b (a6)+,(a5)
add.l #2,a5
move.b (a6)+,(a5)
add.l #2,a5
move.b (a6)+,(a5)
add.l #2,a5
add.l #152,a5
dbf d0,sfillht
sub.w #1,byebye
rts
aboomback:
rts
hidbad: blk.w 1,0
**********************************
hitablock2:
cmpi.w #6,d0
ble hback2
move.l ptsin,a6
move.w 0(a6),d0 ;x
move.w 2(a6),d1 ;y
cmpi.w #94,d0
blt hbh2
cmpi.w #82,d1
blt hbh2
cmpi.w #128,d0
bgt hbh2
cmpi.w #114,d1
bgt hbh2
bra hback2
hbh2: addq.w #1,score
move.w #1,dopr
move.l #0,d0
move.l #0,d1
move.l #0,d2
move.l #0,d3
move.l ptsin,a6
move.l screen3,a5
move.w 0(a6),d0 ;x
move.w 2(a6),d1 ;y
divu #8,d1
move.w d1,d3
mulu #8,d3
swap d1
cmpi.w #3,d1
bge ht12
subq.w #5,d3
bra ht22
ht12:
addq.w #3,d3
ht22:
move.w d3,2(a6)
mulu #160,d3 ;get ad of start of line
divu #16,d0 ;halve it
move.w d0,d2
swap d0
cmpi.w #$8,d0
blt itseveh2
adda #1,d3
itseveh2:
mulu #8,d2
add.w d2,d3
* move.w d3,hidbad
add.w d3,a5
move.l a5,blockad
* move.w #5,byebye
move.w #-1,shooting
move.l #0,d0
move.l blockad,a5
move.w #7,d0
sfillh2:
move.b #0,(a5)
add.l #2,a5
move.b #0,(a5)
add.l #2,a5
move.b #0,(a5)
add.l #2,a5
move.b #0,(a5)
add.l #2,a5
add.l #152,a5
dbf d0,sfillh2
addq.w #1,blockout
* cmpi.w #10,blockout
* bge kb
rts
kb: move.w #10,brhits
move.w #1,bigavail
move.w #1,remember
rts
hback2:
bra hbr5
* move.w hotxvel,d1
* add.w d1,hootx
* move.w hotyvel,d1
* add.w d1,hooty
* cmpi.w #3,d0
* ble hbr5
* tst.w hotxvel
* bmi hbr2
* move.l #2,d0
* bsr randomplus
* addq.w #1,d0
* move.w d0,hotxvel
* bra hbr3
hbr2:
move.l #2,d0
bsr randomplus
neg d0
subq.w #1,d0
move.w d0,hotxvel
hbr3: tst.w hotyvel
bmi hbr4
move.l #2,d0
bsr randomplus
addq.w #1,d0
move.w d0,hotyvel
bra hbr5
hbr4:
move.l #2,d0
bsr randomplus
neg d0
subq.w #1,d0
move.w d0,hotyvel
hbr5:
rts
blockout:
blk.w 1,0
********************************
bigboom:
tst.w break
bpl brno
bsr boom
bsr hitab
addq.w #8,score
move.w #1,dopr
move.l #0,d0
move.l #0,d1
move.l ptsin,a0
move.w 0(a0),d0 ;x
move.w 2(a0),d1 ;y
subq.w #8,d1
mulu #160,d1
divu #16,d0
mulu #8,d0
add.w d0,d1
move.l screen3,a0
add.w d1,a0
move.w d1,bigoffset
move.w #23,d7
bbtest:
and.w #0,(a0)+
and.w #0,(a0)+
and.w #0,(a0)+
and.w #0,(a0)+
and.w #$00ff,(a0)+
and.w #$00ff,(a0)+
and.w #$00ff,(a0)+
and.w #$00ff,(a0)+
adda #144,a0
dbf d7,bbtest
move.w #0,bigflg
move.w #-1,byebye
brno:
rts
bbani:
tst.w bigflg
bmi baniback
move.l #0,d0
move.l #0,d1
move.w bigflg,d0
mulu #384,d0
move.w d0,d1
lea sprite1,a1
add.l d1,a1
move.l hiden,a0
add.w bigoffset,a0
move.w #23,d7
bbanip:
move.w (a1)+,d0
or.w d0,(a0)+
move.w (a1)+,d0
or.w d0,(a0)+
move.w (a1)+,d0
or.w d0,(a0)+
move.w (a1)+,d0
or.w d0,(a0)+
move.w (a1)+,d0
or.w d0,(a0)+
move.w (a1)+,d0
or.w d0,(a0)+
move.w (a1)+,d0
or.w d0,(a0)+
move.w (a1)+,d0
or.w d0,(a0)+
adda #144,a0
dbf d7,bbanip
add.w #1,bigflg
cmpi.w #7,bigflg
bgt banibover
baniback:
rts
banibover:
move.w #-1,bigflg
rts
bigoffset: blk.l 1,0
*******************************************************
hitablockb:
move.l #0,d0
move.l #0,d1
move.l #0,d2
move.l #0,d3
move.l ptsin,a6
move.l screen3,a5
move.w 0(a6),d0 ;x
move.w 2(a6),d1 ;y
divu #8,d1
move.w d1,d3
mulu #8,d3
swap d1
cmpi.w #3,d1
bge ht1b
subq.w #5,d3
bra ht2b
ht1b:
addq.w #3,d3
ht2b:
mulu #160,d3 ;get ad of start of line
divu #16,d0 ;halve it
move.w d0,d2
swap d0
cmpi.w #$8,d0
blt itsevehb
adda #1,a5
itsevehb:
mulu #8,d2
add.w d2,d3
add.w d3,a5
move.l a5,blockad
move.l #0,d0
move.l blockad,a5
move.w #7,d0
sfillhb:
move.b #0,(a5)
add.l #2,a5
move.b #0,(a5)
add.l #2,a5
move.b #0,(a5)
add.l #2,a5
move.b #0,(a5)
add.l #2,a5
add.l #152,a5
dbf d0,sfillhb
sub.w #1,bigcount
bmi nomorebig
rts
nomorebig:
move.w #-1,shooting
rts
*******************************************************
* byte size grow routine
*******************************************************
smallgrow:
tst.w grtimer
bpl growback
move.l #20,d0
bsr randomplus ;get rnd number between 0-20
br1: lea ring,a0 ;co-ords and side of first ring
mulu #6,d0 ;3 items
adda d0,a0 ;a0 now where i want it
move.l a0,a6
move.w 0(a0),d7 ;d7 contains which side of ring
move.l ptsin,a1
move.w 2(a0),(a1)
move.w 4(a0),2(a1)
dc.w getpix
tst.w d0
beq smallfill
tst.w d7
bne gright
grup: move.l ptsin,a1
sub.w #8,2(a1)
dc.w getpix
tst.w d0
beq smallfill
uprnd: move.l #3,d0
bsr randomplus
tst.w d0
bgt grup1
move.l ptsin,a1
sub.w #8,(a1)
dc.w getpix
tst.w d0
beq smallfill
bra uprnd
grup1:
cmpi.w #1,d0
bne grup2
move.l ptsin,a1
sub.w #8,2(a1)
dc.w getpix
tst.w d0
beq smallfill
bra uprnd
grup2:
move.l ptsin,a1
add.w #8,(a1)
dc.w getpix
tst.w d0
beq smallfill
bra uprnd
gright:
cmpi.w #1,d7
bne grdown
move.l ptsin,a1
add.w #8,(a1)
dc.w getpix
tst.w d0
beq smallfill
rirnd: move.l #3,d0
bsr randomplus
tst.w d0
bgt grit1
move.l ptsin,a1
sub.w #8,2(a1)
dc.w getpix
tst.w d0
beq smallfill
bra rirnd
grit1:
cmpi.w #1,d0
bne grit2
move.l ptsin,a1
add.w #8,(a1)
dc.w getpix
tst.w d0
beq smallfill
bra rirnd
grit2:
move.l ptsin,a1
add.w #8,2(a1)
dc.w getpix
tst.w d0
beq smallfill
bra rirnd
grdown:
cmpi.w #2,d7
bne grleft
move.l ptsin,a1
add.w #8,2(a1)
dc.w getpix
tst.w d0
beq smallfill
dirnd: move.l #3,d0
bsr randomplus
tst.w d0
bgt gdown1
move.l ptsin,a1
add.w #8,(a1)
dc.w getpix
tst.w d0
beq smallfill
bra dirnd
gdown1:
cmpi.w #1,d0
bne gdown2
move.l ptsin,a1
add.w #8,2(a1)
dc.w getpix
tst.w d0
beq smallfill
bra dirnd
gdown2:
move.l ptsin,a1
sub.w #8,(a1)
dc.w getpix
tst.w d0
beq smallfill
bra dirnd
grleft:
cmpi.w #3,d7
bne gnot
move.l ptsin,a1
sub.w #8,(a1)
dc.w getpix
tst.w d0
beq smallfill
lirnd: move.l #3,d0
bsr randomplus
tst.w d0
bgt gleft1
move.l ptsin,a1
add.w #8,2(a1)
dc.w getpix
tst.w d0
beq smallfill
bra lirnd
gleft1:
cmpi.w #1,d0
bne gleft2
move.l ptsin,a1
sub.w #8,(a1)
dc.w getpix
tst.w d0
beq smallfill
bra lirnd
gleft2:
move.l ptsin,a1
sub.w #8,2(a1)
dc.w getpix
tst.w d0
beq smallfill
bra lirnd
rts
gnot:
rts
*********************************************************
* New smaller block version
**********************************************************
smallfill:
move.l #0,d0
move.l #0,d1
move.l #0,d2
move.l ptsin,a6
move.l screen3,a5
move.w 0(a6),d0 ;x
move.w 2(a6),d1 ;y
bsr killem
mulu #160,d1 ;get ad of start of line
divu #16,d0 ;halve it
move.w d0,d2
swap d0
tst.w d0
beq itseve
adda #1,a5
move.l #100,d0
movem.l d1/d2/a5/a6,-(sp)
bsr randomplus
movem.l (sp)+,d1/d2/a5/a6
cmpi.w #5,d0
bgt itseve
move.l #specialb,a6
bra itseve2a
itseve: move.l whichblock,a6
itseve2a:
asl.w #3,d2
add.w d2,d1
add.w d1,a5
move.l #7,d0
sfill:
move.b (a6)+,(a5)
add.l #2,a5
move.b (a6)+,(a5)
add.l #2,a5
move.b (a6)+,(a5)
add.l #2,a5
move.b (a6)+,(a5)
add.l #2,a5
add.l #152,a5
dbf d0,sfill
move.w speed,grtimer
growback:
subq.w #1,grtimer
rts
********************************
killem:
cmpi.w #10,d0
bgt k1
move.w #1,hesdead
rts
k1: cmpi.w #10,d1
bgt k2
move.w #1,hesdead
rts
k2: cmpi.w #214,d0
blt k3
move.w #1,hesdead
rts
k3: cmpi.w #187,d1
blt k4
move.w #1,hesdead
rts
k4: rts
sfill2:
move.l screen3,a5
mulu #160,d1 ;get ad of start of line
divu #16,d0 ;halve it
move.w d0,d2
swap d0
tst.w d0
beq itseve2
adda #1,a5
itseve2:
mulu #8,d2
add.w d2,d1
add.w d1,a5
move.l whichblock,a6
move.l #7,d0
sfills:
move.b (a6)+,(a5)
add.l #2,a5
move.b (a6)+,(a5)
add.l #2,a5
move.b (a6)+,(a5)
add.l #2,a5
move.b (a6)+,(a5)
add.l #2,a5
add.l #152,a5
dbf d0,sfills
rts
****************************************************
* put the first 2 rings in
****************************************************
putfirst:
lea ring,a0
move.w #19,d7
firstring:
move.l #0,d0
move.l #0,d1
move.l #0,d2
move.w (a0)+,d0
move.w (a0)+,d0
move.w (a0)+,d1
movem.l d7/a0,-(sp)
bsr sfill2
movem.l (sp)+,d7/a0
dbf d7,firstring
lea ring2,a0
move.w #27,d7
secring:
move.l #0,d0
move.l #0,d1
move.l #0,d2
move.w (a0)+,d0
move.w (a0)+,d1
movem.l d7/a0,-(sp)
bsr sfill2
movem.l (sp)+,d7/a0
dbf d7,secring
rts
*************************
keyboard:
move.w #$ff,-(sp)
move.w #6,-(sp)
trap #1
addq.l #4,sp
tst.l d0
beq keyback
swap d0
quit: cmpi.w #$10,d0
bne aman
bra gem
aman: cmpi.w #57,d0
bne keyback
bra pause
moveon: cmpi.w #$0f,d0
bne keyback
move.w #10,brhits
keyback:rts
*****************************
pause:
move.w #$ff,-(sp)
move.w #6,-(sp)
trap #1
addq.l #4,sp
tst.l d0
beq pause
swap d0
cmpi.w #$1e,d0
bne keyback
bsr gkey
cmpi.w #$32,d0
bne keyback
bsr gkey
cmpi.w #$1e,d0
bne keyback
bsr gkey
cmpi.w #$31,d0
bne keyback
bsr gkey
cmpi.w #$20,d0
bne keyback
bsr gkey
cmpi.w #$1e,d0
bne keyback
move.w #100,ships
move.w #1,dopr
move.w #1,bigavail
bsr weapons
bra keyback
gkey:
move.w #$ff,-(sp)
move.w #6,-(sp)
trap #1
addq.l #4,sp
tst.l d0
beq gkey
swap d0
rts
*****************************
*********************vbli routine to beat the brain************
brainy:
cmpi.w #8,brhits
bge eb
tst.w brtimer
bgt brdec
move.w lastbr,d0
tst.w d0
bgt lit
big: move.w #31,d1
move.l #bbrain,a0 ;shifted sprite address
move.l screen3,a1 ;absolute screen address to a1
addi.l #13328,a1
big1: move.w #1,d0 ;copy width to d0
big2: move.l (a0)+,(a1)+ ;move all four planes
move.l (a0)+,(a1)+ ;(2 longs = 4 words(planes))
dbf d0,big2 ;repeat width times
add.l #144,a1 ;move pointer to next line
dbf d1,big1 ;repeat height times
move.w #1,lastbr
move.w #5,brtimer
rts
lit: move.w #31,d1
move.l #lbrain,a0 ;shifted sprite address
move.l screen3,a1 ;absolute screen address to a1
addi.l #13328,a1
lit1: move.w #1,d0 ;copy width to d0
lit2: move.l (a0)+,(a1)+ ;move all four planes
move.l (a0)+,(a1)+ ;(2 longs = 4 words(planes))
dbf d0,lit2 ;repeat width times
add.l #144,a1 ;move pointer to next line
dbf d1,lit1 ;repeat height times
move.w #0,lastbr
move.w #10,brtimer
rts
brdec: subi.w #1,brtimer
brback: rts
eb: move.w #31,d1
move.l #eyebrain,a0 ;shifted sprite address
move.l screen3,a1 ;absolute screen address to a1
addi.l #13328,a1
ebig1: move.w #1,d0 ;copy width to d0
ebig2: move.l (a0)+,(a1)+ ;move all four planes
move.l (a0)+,(a1)+ ;(2 longs = 4 words(planes))
dbf d0,ebig2 ;repeat width times
add.l #144,a1 ;move pointer to next line
dbf d1,ebig1 ;repeat height times
rts
******************************************************************
************code to determine x offset *****************
* and absolute screen address *
* parameters to pass on stack as follows *
* 1- x of sprite *
* 2- y of sprite *
* 3- screen address *
* paremeters returned are x offset in d0 *
* absolute screen address in d2 *
*********************************************************
shotsp:
move.l hiden,spblock+16
move.l #0,d0
move.w spblock,d0 ;put x value in d0
divu #16,d0 ;divide by 16 leaves word boundry in d0
move.w spblock+2,d1 ;put y value in d1
mulu #160,d1 ;gives offset in words of line
move.w d0,d3
mulu #8,d3
add d3,d1 ;gives word to poke sprite
move.l spblock+16,d2 ;put screen address in d2
add d1,d2 ;gives actual screen address for sprite
move.l d2,spblock+20
asr.l #8,d0
asr.l #8,d0 ;leaves x offset in d0
move.w d0,spblock+24
*************CODE TO ROTATE A SPRITE IMAGE***********************
* parameters to be passed on the stack in order are *
* 1- x offset from start of word *
* 2- address of place to put shifted image(tempsp) *
* 3- address of sprite data *
* 4- height of object in pixels *
* 5- width of object in words - 1 *
*****************************************************************
shiftimages:
move.w spblock+4,d1 ;height in d1
move.w spblock+24,d2 ;offset to d2
subq.w #1,d1 ;height - 1 = height if count starts at zero
subq.w #1,spblock+6 ;width - 1 = width if count starts at zero
move.l spblock+8,a0 ;object pointer to a0
move.l spblock+12,a1 ;image pointer to a1
ssi1: move.w spblock+6,d0 ;width in d0
clr.l (a1) ;for each line, the first word of the
clr.l 4(a1) ;image must be cleared
ssi0: clr.l d4 ;make sure that the top halves of these
clr.l d5 ;registers are zeroed out
clr.l d6
clr.l d7
move.w (a0)+,d4 ;load in one word (four planes)
move.w (a0)+,d5 ;to be rotated
move.w (a0)+,d6
move.w (a0)+,d7
ror.l d2,d4 ;rotate all planes by the offset(d2)
ror.l d2,d5
ror.l d2,d6
ror.l d2,d7
or.w d4,(a1)+ ;add low order bits to the high order bits
or.w d5,(a1)+ ;stored by move instructions farther
or.w d6,(a1)+ ;down in this routine
or.w d7,(a1)+
swap d4 ;move high order bits into lower halves
swap d5 ;of the registers
swap d6
swap d7
move.w d4,(a1) ;save the high orders bits to be ORed
move.w d5,2(a1) ;in the loop (do not increment a1 because
move.w d6,4(a1) ;the ORs in the loop must function on
move.w d7,6(a1) ;the same addresses as these moves.
dbf d0,ssi0 ;repeat width times
addq.l #8,a1 ;new line, move to next word( * 4 planes = 8)
dbf d1,ssi1 ;repeat height times
addi.w #1,spblock+6
smake_mask:
move.w spblock+4,d1 ;height in d1
subq.w #1,d1 ;height - 1 = height if count starts at zero
move.l spblock+12,a0 ;image pointer to a0
move.l spblock+38,a1 ;mask pointer to a1
smm1: move.w spblock+6,d0 ;width in d0
smm0: move.w (a0)+,d2 ;load first plane of bit image in d2
or.w (a0)+,d2 ;OR it with the 3 other planes
or.w (a0)+,d2
or.w (a0)+,d2
move.w d2,d3 ;store inverse mask in d3 (temporary)
swap d2 ;move inverse mask to top half of register
move.w d3,d2 ;and also in bottom half
eor.l #-1,d2 ;mask no longer inverse
move.l d2,(a1)+ ;store mask in buffer
dbf d0,smm0 ;repeat 'width' times
dbf d1,smm1 ;repeat 'height' times
*********code to put sprite on screen********************
*********parameters to be passed on the stack are********
*********1- shifted sprite address (tempsp) *********
*********2- absolute screen address to put image*****
*********3- height in pixels *********
*********4- width in words -1 *********
sdraw:
move.w spblock+4,d1 ;height to d1
subq.w #1,d1 ;height - 1 = height if count starts at zero
move.l spblock+12,a1 ;image pointer to a1
move.l spblock+38,a2 ;mask pointer to a2
move.l spblock+20,a3 ;screen buffer pointer to a3
sdi1: move.w spblock+6,d0 ;width to d0
move.l spblock+20,a0 ;absolute screen address to a0
sdi0: move.l (a2)+,d3 ;load mask data into d3
move.l (a1)+,d6 ;load screen image into d6 and d7
move.l (a1)+,d7 ;2 words each covers all 4 planes
move.l (a3)+,d4 ;do the same for the background
move.l (a3)+,d5 ;in d4 and d5 (from buffer, not screen)
and.l d3,d4 ;mask background
and.l d3,d5
or.l d6,d4 ;copy image onto background
or.l d7,d5 ;giving final image on top of background
move.l d4,(a0)+ ;copy final image into screen memory
move.l d5,(a0)+
dbf d0,sdi0 ;repeat for 'width' times
add.l #160,spblock+20 ;move to next screen line
addi.l #144,a3
dbf d1,sdi1 ;repeat 'height' times
rts
************code to determine x offset *****************
* and absolute screen address *
* parameters to pass on stack as follows *
* 1- x of sprite *
* 2- y of sprite *
* 3- screen address *
* paremeters returned are x offset in d0 *
* absolute screen address in d2 *
*********************************************************
wship0: blk.l 1,0
wship1: blk.l 1,0
wship2: blk.l 1,0
wship3: blk.l 1,0
shipm: blk.w 500,0
putsp:
move.l #shipm,pblock+38
move.w mx,d0 ;move value of mouse into d0
mulu #6,d0 ;*6 gives address in array containing
move.l #spxy,a0 ;sprite no. and x,y
move.w (a0,d0),d1 ;puts sprite no. in d1
move.w d1,whsp
move.w 2(a0,d0),pblock ;put x pos. in parameter block
move.w 2(a0,d0),shipx
move.w 4(a0,d0),shipy
move.w 4(a0,d0),pblock+2 ;puts y pos. in pblock
tst.w d1
bgt .S best1
move.l wship0,pblock+8
move.w #2,pblock+6
move.w #10,pblock+4
move.w #2,pblock+26
move.w #136,pblock+46
bra .L last
best1: cmpi.w #1,d1
bgt .S best2
move.l wship3,pblock+8
move.w #1,pblock+6
move.w #32,pblock+4
move.w #1,pblock+26
move.w #144,pblock+46
bra .S last
best2: cmpi.w #2,d1
bgt .S best3
move.l wship2,pblock+8
move.w #2,pblock+6
move.w #10,pblock+4
move.w #2,pblock+26
move.w #136,pblock+46
bra last
best3: move.l wship1,pblock+8
move.w #1,pblock+6
move.w #32,pblock+4
move.w #1,pblock+26
move.w #144,pblock+46
last: move.l #tempsp,pblock+12
move.l hiden,pblock+16
calc:
clr.l d0
move.w pblock,d0 ;put x value in d0
divu #16,d0 ;divide by 16 leaves word boundry in d0
move.w pblock+2,d1 ;put y value in d1
mulu #160,d1 ;gives offset in words of line
move.w d0,d3
mulu #8,d3
add d3,d1 ;gives word to poke sprite
move.l pblock+16,d2 ;put screen address in d2
add d1,d2 ;gives actual screen address for sprite
move.l d2,oldscr
move.l d2,pblock+20
asr.l #8,d0
asr.l #8,d0 ;leaves x offset in d0
move.w d0,pblock+24
*************CODE TO ROTATE A SPRITE IMAGE***********************
* parameters to be passed on the stack in order are *
* 1- x offset from start of word *
* 2- address of place to put shifted image(tempsp) *
* 3- address of sprite data *
* 4- height of object in pixels *
* 5- width of object in words - 1 *
*****************************************************************
shiftimage:
move.w pblock+4,d1 ;height in d1
move.w pblock+24,d2 ;offset to d2
subq.w #1,d1 ;height - 1 = height if count starts at zero
subq.w #1,pblock+6 ;width - 1 = width if count starts at zero
move.l pblock+8,a0 ;object pointer to a0
move.l pblock+12,a1 ;image pointer to a1
si1: move.w pblock+6,d0 ;width in d0
clr.l (a1) ;for each line, the first word of the
clr.l 4(a1) ;image must be cleared
si0: clr.l d4 ;make sure that the top halves of these
clr.l d5 ;registers are zeroed out
clr.l d6
clr.l d7
move.w (a0)+,d4 ;load in one word (four planes)
move.w (a0)+,d5 ;to be rotated
move.w (a0)+,d6
move.w (a0)+,d7
ror.l d2,d4 ;rotate all planes by the offset(d2)
ror.l d2,d5
ror.l d2,d6
ror.l d2,d7
or.w d4,(a1)+ ;add low order bits to the high order bits
or.w d5,(a1)+ ;stored by move instructions farther
or.w d6,(a1)+ ;down in this routine
or.w d7,(a1)+
swap d4 ;move high order bits into lower halves
swap d5 ;of the registers
swap d6
swap d7
move.w d4,(a1) ;save the high orders bits to be ORed
move.w d5,2(a1) ;in the loop (do not increment a1 because
move.w d6,4(a1) ;the ORs in the loop must function on
move.w d7,6(a1) ;the same addresses as these moves.
dbf d0,si0 ;repeat width times
addq.l #8,a1 ;new line, move to next word( * 4 planes = 8)
dbf d1,si1 ;repeat height times
addi.w #1,pblock+6
make_mask:
move.w pblock+4,d1 ;height in d1
subq.w #1,d1 ;height - 1 = height if count starts at zero
move.l pblock+12,a0 ;image pointer to a0
move.l pblock+38,a1 ;mask pointer to a1
mm1: move.w pblock+6,d0 ;width in d0
mm0: move.w (a0)+,d2 ;load first plane of bit image in d2
or.w (a0)+,d2 ;OR it with the 3 other planes
or.w (a0)+,d2
or.w (a0)+,d2
move.w d2,d3 ;store inverse mask in d3 (temporary)
swap d2 ;move inverse mask to top half of register
move.w d3,d2 ;and also in bottom half
eor.l #-1,d2 ;mask no longer inverse
move.l d2,(a1)+ ;store mask in buffer
dbf d0,mm0 ;repeat 'width' times
dbf d1,mm1 ;repeat 'height' times
draw:
move.w pblock+4,d1 ;height to d1
subq.w #1,d1 ;height - 1 = height if count starts at zero
move.l pblock+12,a1 ;image pointer to a1
move.l pblock+38,a2 ;mask pointer to a2
move.l pblock+20,a3 ;screen buffer pointer to a3
di1: move.w pblock+6,d0 ;width to d0
move.l pblock+20,a0 ;absolute screen address to a0
di0: move.l (a2)+,d3 ;load mask data into d3
move.l (a1)+,d6 ;load screen image into d6 and d7
move.l (a1)+,d7 ;2 words each covers all 4 planes
move.l (a3)+,d4 ;do the same for the background
move.l (a3)+,d5 ;in d4 and d5 (from buffer, not screen)
and.l d3,d4 ;mask background
and.l d3,d5
or.l d6,d4 ;copy image onto background
or.l d7,d5 ;giving final image on top of background
move.l d4,(a0)+ ;copy final image into screen memory
move.l d5,(a0)+
dbf d0,di0 ;repeat for 'width' times
add.l #160,pblock+20 ;move to next screen line
add.w pblock+46,a3
dbf d1,di1 ;repeat 'height' times
rts
**********************************
putnums:
tst.w dopr
bmi pthome
prtscr: move.l #scorepos,pos
move.w score,number
bsr prtnum
move.w score,d7
cmp.w emancnt,d7
blt prtships
addq.w #1,ships
bsr reward
addi.w #2000,emancnt
prtships:
move.l #shippos,pos
move.w ships,number
bsr prtnum
prtlev: move.l #levpos,pos
move.w level,number
bsr prtnum
subq.w #1,dopr
pthome:
rts
emancnt: blk.w 1,0
dopr: blk.w 1,0
***************************************************************************
* RETURN TO GEM
gem:
move.w #$2700,sr
move.l oldvbl1,a0
move.l #0,(a0)
jsr oldmfp
move.w #34,-(sp)
trap #14
addq.l #2,sp
move.l d0,a0
move.l oldmouse,16(a0)
move.b #7,$484
move.w ressave,-(sp)
move.l screen1,-(sp)
move.l screen1,-(sp)
move.w #5,-(sp)
trap #14
addi.l #12,sp
move.l spv_sp,-(SP) ;Back to user mode
move.w #$20,-(SP)
trap #1
addq.l #6,(SP)
illegal
CLR.W -(SP) ;RETURN TO GEM
TRAP #1
spv_sp: blk.l 1 ;supervisor SP store
***************************************************************************
* FLIP SCREEN
* Flip displayed screen.
copyscr:
move.l screen3,a0 ;first copy from third to hiden
move.l #199,d0
move.l hiden,a1
copyit:
move.w (a0)+,(a1)+
move.w (a0)+,(a1)+
move.w (a0)+,(a1)+
move.w (a0)+,(a1)+
move.w (a0)+,(a1)+
move.w (a0)+,(a1)+
move.w (a0)+,(a1)+
move.w (a0)+,(a1)+
move.w (a0)+,(a1)+
move.w (a0)+,(a1)+
move.w (a0)+,(a1)+
move.w (a0)+,(a1)+
move.w (a0)+,(a1)+
move.w (a0)+,(a1)+
move.w (a0)+,(a1)+
move.w (a0)+,(a1)+
move.w (a0)+,(a1)+
move.w (a0)+,(a1)+
move.w (a0)+,(a1)+
move.w (a0)+,(a1)+
move.w (a0)+,(a1)+
move.w (a0)+,(a1)+
move.w (a0)+,(a1)+
move.w (a0)+,(a1)+
move.w (a0)+,(a1)+
move.w (a0)+,(a1)+
move.w (a0)+,(a1)+
move.w (a0)+,(a1)+
move.w (a0)+,(a1)+
move.w (a0)+,(a1)+
move.w (a0)+,(a1)+
move.w (a0)+,(a1)+
move.w (a0)+,(a1)+
move.w (a0)+,(a1)+
move.w (a0)+,(a1)+
move.w (a0)+,(a1)+
move.w (a0)+,(a1)+
move.w (a0)+,(a1)+
move.w (a0)+,(a1)+
move.w (a0)+,(a1)+
move.w (a0)+,(a1)+
move.w (a0)+,(a1)+
move.w (a0)+,(a1)+
move.w (a0)+,(a1)+
move.w (a0)+,(a1)+
move.w (a0)+,(a1)+
move.w (a0)+,(a1)+
move.w (a0)+,(a1)+
move.w (a0)+,(a1)+
move.w (a0)+,(a1)+
move.w (a0)+,(a1)+
move.w (a0)+,(a1)+
move.w (a0)+,(a1)+
move.w (a0)+,(a1)+
move.w (a0)+,(a1)+
move.w (a0)+,(a1)+
adda #48,a0
adda #48,a1
dbf d0,copyit
rts
beamer:
move.l #$ff8205,a0
move.l #0,d0
move.b (a0),d0
asl.l #8,d0
adda.w #2,a0
move.b (a0),d0
asl.l #8,d0
adda.w #2,a0
move.b (a0),d0
rts
flip_scr:
bra fl
move.l seen,d1
move.l d1,d2
add.l #160,d1
add.l #32000,d2
skloop:
bsr beamer
cmp.l d1,d0
blt skloop
cmp.l d2,d0
bgt skloop
fl:
move.l seen,A6
move.l hiden,seen
move.l A6,hiden
move.l sytable,A6
move.l ytable,sytable
move.l A6,ytable
* rts
df: move.w #-1,-(sp)
move.l seen,-(sp)
move.l hiden,-(sp)
move.w #5,-(sp)
trap #14
addi.l #12,sp
move.w #37,-(sp)
trap #14
addq.l #2,sp
rts
********************************************
* Atari ST hi-speed plotting subroutine *
********************************************
* For Low-resolution mode only *
********************************************
**************************************
* INITIALIZE THE PLOTTING ROUTINE: *
* BUILDS PLOT ADDRESS TABLE (YTABLE) *
* FOR FAST PLOTTING. *
* *
* CALL WITH: *
* pinit(SCREENADDRESS) *
**************************************
plotinit:
move.l seen,a0 ;screen addr in A0
move.b #200,d1 ;200 Y positions
move.l #ytable1,a1 ;y table address in A1
iloop:
move.l a0,(a1)+ ;move address to table
adda.w #160,a0 ;increment address
subq.b #1,d1 ;1 less y position
bne iloop ;loop if there's more!
move.l hiden,a0 ;screen addr in A0
move.b #200,d1 ;200 Y positions
move.l #ytable2,a1 ;y table address in A1
iloop2:
move.l a0,(a1)+ ;move address to table
adda.w #160,a0 ;increment address
subq.b #1,d1 ;1 less y position
bne iloop2 ;loop if there's more!
move.l #ytable2,ytable
rts
pixelx: blk.w 1,0
pixely: blk.w 1,0
pixelcolor:
blk.w 1,0
ytable1: blk.l 200,0
ytable2: blk.l 200,0
ytable: blk.l 1,0
sytable: blk.l 1,0
********************************************
myplot2:
movem.l d0-d5/a0-a1,-(sp)
move.w pixelx,d0 ;x coordinate in D0
move.w d0,d3 ;duplicate in D3
andi.w #15,d3 ;mask off lower 4 bits
move.w pixely,d1 ;get y coordinate,
lsl.w #2,d1 ;mult by 4 for index
move.w pixelcolor,d2 ;get color number
lsr.w #1,d0 ;x coord / 2
and.w #$00f8,d0 ;strip lower 3 bits
move.w d0,a0 ;move x offset to A0
move.l ytable,a1 ;get y table addr
adda.l 0(a1,d1.w),a0 ;got final pixel addr!
move.w #$8000,d4 ;set ON pixel mask
lsr.w d3,d4 ;shift right D3 times
move.l #$80008000,d5 ;set OFF pixel mask
lsr.l d3,d5 ;shift right D3 times
eor.l #$ffffffff,d5 ;toggle all bits in D5
bra myphere
**************************************
* PLOT A PIXEL WITH MY ROUTINE *
* *
* CALL WITH: *
* myplot(X,Y,COLOR) *
**************************************
myplot:
movem.l d0-d5/a0-a1,-(sp)
move.w pixelx,d0 ;x coordinate in D0
* cmp.w #302,d0
* bcc pltxit
* cmpi.w #113,d0
* blt pltxit
move.w d0,d3 ;duplicate in D3
andi.w #15,d3 ;mask off lower 4 bits
move.w pixely,d1 ;get y coordinate,
* cmp.w #199,d1
* bcc pltxit
lsl.w #2,d1 ;mult by 4 for index
move.w pixelcolor,d2 ;get color number
lsr.w #1,d0 ;x coord / 2
and.w #$00f8,d0 ;strip lower 3 bits
move.w d0,a0 ;move x offset to A0
move.l ytable,a1 ;get y table addr
adda.l 0(a1,d1.w),a0 ;got final pixel addr!
cmpi.w #15,d3
beq singlepix
move.w #$c000,d4 ;set ON pixel mask
lsr.w d3,d4 ;shift right D3 times
move.l #$c000c000,d5 ;set OFF pixel mask
lsr.l d3,d5 ;shift right D3 times
eor.l #$ffffffff,d5 ;toggle all bits in D5
bra myphere
singlepix:
move.w #$8000,d4 ;set ON pixel mask
lsr.w d3,d4 ;shift right D3 times
move.l #$80008000,d5 ;set OFF pixel mask
lsr.l d3,d5 ;shift right D3 times
eor.l #$ffffffff,d5 ;toggle all bits in D5
and.l d5,(a0) ;turn off old pixel
and.l d5,4(a0) ;(both longwords)
******************************
* Now turn on the new pixel! *
******************************
* BIT 1 *
btst #0,d2 ;set the bit?
beq bbit2 ;no!
or.w d4,(a0) ;turn it on!
* BIT 2 *
bbit2:
btst #1,d2 ;set it?
beq bbit4 ;no!
or.w d4,2(a0) ;turn it on!
* BIT 4 *
bbit4:
btst #2,d2 ;set bit?
beq bbit8 ;no!
or.w d4,4(a0) ;turn it on!
* BIT 8 *
bbit8:
btst #3,d2 ;set bit?
beq mysec ;no, exit.
or.w d4,6(a0) ;turn it on!
mysec:
adda.l #8,a0
move.w #$8000,d4 ;set ON pixel mask
move.l #$80008000,d5 ;set OFF pixel mask
eor.l #$ffffffff,d5 ;toggle all bits in D5
and.l d5,(a0) ;turn off old pixel
and.l d5,4(a0) ;(both longwords)
******************************
* Turn off old pixel! *
******************************
myphere:
and.l d5,(a0) ;turn off old pixel
and.l d5,4(a0) ;(both longwords)
******************************
* Now turn on the new pixel! *
******************************
* BIT 1 *
btst #0,d2 ;set the bit?
beq bit2 ;no!
or.w d4,(a0) ;turn it on!
* BIT 2 *
bit2:
btst #1,d2 ;set it?
beq bit4 ;no!
or.w d4,2(a0) ;turn it on!
* BIT 4 *
bit4:
btst #2,d2 ;set bit?
beq bit8 ;no!
or.w d4,4(a0) ;turn it on!
* BIT 8 *
bit8:
btst #3,d2 ;set bit?
beq pltxit ;no, exit.
or.w d4,6(a0) ;turn it on!
pltxit:
movem.l (sp)+,d0-d5/a0-a1
rts ;bye!
**********************
* get low-rez pixel *
* get0(scrnbase,x,y) *
**********************
*gets pixel in hiden screen
mygetpix:
move.l hiden,a1
clr.w d0 ;zero result register
move.w pixely,d3 ;get Y coordinate
and.l #$0000ffff,d3 ;mask off for multiply
mulu #160,d3 ;multiply by 160 (# of bytes per scan line)
adda.l d3,a1 ;add to screen base address
move.w pixelx,d1 ;get X coordinate
move.w d1,d2 ;duplicate it in D2
lsr.w #1,d1 ;divide it by 2
and.w #$00f8,d1 ;turn off lower 3 bits
adda.w d1,a1 ;add to screen address register
move.w (a1),d3 ;grab screen word
and.l #15,d2 ;mask X to 0-15
move.w #$8000,d1 ;set up bit mask
lsr.w d2,d1 ;shift bit mask 0-15 bits
and.w d1,d3 ;mask off bit 0
beq bit0b ;bit's off, go get next color bit
move.w #1,d0 ;turn on bit 0 in result
bit0b:
move.w 2(a1),d3 ;get screen word for bit 1 of color
and.w d1,d3 ;get bit 1
beq bit0c ;it's off, try bit 2
or.w #2,d0 ;turn on bit 1 in result
bit0c:
move.w 4(a1),d3 ;get screen word for bit 2
and.w d1,d3 ;get bit 2
beq bit0d ;it's off, try bit 3
or.w #4,d0 ;turn on bit 2 in result
bit0d:
move.w 6(a1),d3 ;get word for bit 3
and.w d1,d3 ;get bit 3
beq getx0 ;it's off!
or.w #8,d0 ;turn on bit 3 in result
getx0:
rts
*************************************************
linea: dc.w $a000
move.l a0,linepar
move.l 8(a0),intin
move.l 12(a0),ptsin
rts
*************************************************
***********************fancy clear screen****************
clearsc:move.l #99,d0
move.l screen,a0
cl1: move.w #159,d1
cl2: move.w #0,(a0)+
dbf d1,cl2
addi.l #160,a0
dbf d0,cl1
move.w #99,d0
move.l screen,a0
addi.l #160,a0
cl3: move.w #159,d1
cl4: move.w #0,(a0)+
dbf d1,cl4
addi.l #160,a0
dbf d0,cl3
rts
cldel: move.w #3000,d2
cdel1: nop
dbf d2,cdel1
rts
********************************
copyintoboth:
move.l screen4,a0
move.l screen3,a1
move.w #4000,d0
cib3:
move.l (a0)+,(a1)+
move.l (a0)+,(a1)+
dbf d0,cib3
*now clear the title stuff out
bsr clita
move.l screen3,a0
move.l screen1,a1
move.w #4000,d0
cib:
move.l (a0)+,(a1)+
move.l (a0)+,(a1)+
dbf d0,cib
move.l screen3,a0
move.l screen2,a1
move.w #4000,d0
cib2:
move.l (a0)+,(a1)+
move.l (a0)+,(a1)+
dbf d0,cib2
rts
clita:
move.l screen3,a1 ;first copy from third to hiden
move.l #149,d0
add.l #4000,a1
clit:
move.w #0,(a1)+
move.w #0,(a1)+
move.w #0,(a1)+
move.w #0,(a1)+
move.w #0,(a1)+
move.w #0,(a1)+
move.w #0,(a1)+
move.w #0,(a1)+
move.w #0,(a1)+
move.w #0,(a1)+
move.w #0,(a1)+
move.w #0,(a1)+
move.w #0,(a1)+
move.w #0,(a1)+
move.w #0,(a1)+
move.w #0,(a1)+
move.w #0,(a1)+
move.w #0,(a1)+
move.w #0,(a1)+
move.w #0,(a1)+
move.w #0,(a1)+
move.w #0,(a1)+
move.w #0,(a1)+
move.w #0,(a1)+
move.w #0,(a1)+
move.w #0,(a1)+
move.w #0,(a1)+
move.w #0,(a1)+
move.w #0,(a1)+
move.w #0,(a1)+
move.w #0,(a1)+
move.w #0,(a1)+
move.w #0,(a1)+
move.w #0,(a1)+
move.w #0,(a1)+
move.w #0,(a1)+
move.w #0,(a1)+
move.w #0,(a1)+
move.w #0,(a1)+
move.w #0,(a1)+
move.w #0,(a1)+
move.w #0,(a1)+
move.w #0,(a1)+
move.w #0,(a1)+
move.w #0,(a1)+
move.w #0,(a1)+
move.w #0,(a1)+
move.w #0,(a1)+
move.w #0,(a1)+
move.w #0,(a1)+
move.w #0,(a1)+
move.w #0,(a1)+
move.w #0,(a1)+
move.w #0,(a1)+
move.w #0,(a1)+
move.w #0,(a1)+
* adda #48,a0
adda #48,a1
dbf d0,clit
rts
********************fancy copy screen*************
copysc: move.w #99,d0
move.l screen,a0
move.l screen2,a1
cop1: move.w #159,d1
cop2: move.w (a1)+,(a0)+
dbf d1,cop2
addi.l #160,a0
addi.l #160,a1
dbf d0,cop1
move.w #99,d0
move.l screen,a0
addi.l #160,a0
move.l screen2,a1
addi.l #160,a1
cop3: move.w #159,d1
cop4: move.w (a1)+,(a0)+
dbf d1,cop4
addi.l #160,a0
addi.l #160,a1
dbf d0,cop3
rts
**********************routine to print a dec nuber*************
prtnum:
move.l #0,d7
move.w number,d7
andi.l #$ffff,d7
move.l #line,a5
dodec: move.l d7,d6
divu #10,d6
move.w d6,d7
swap d6
addi.w #16,d6
move.b d6,(a5)+
cmpi.w #0,d7
bne dodec
move.l pos,-(sp)
move.w #9,-(sp)
trap #1
addq.l #6,sp
move.l #greencol,-(sp)
move.w #9,-(sp)
trap #1
addq.l #6,sp
move.l #backcol,-(sp)
move.w #9,-(sp)
trap #1
addq.l #6,sp
out: cmpa.l #line,a5
beq decback
move.b -(a5),d7
andi.w #$ff,d7
move.w d7,-(sp)
move.w #5,-(sp)
move.w #3,-(sp)
trap #13
addq.l #6,sp
bra out
decback:
move.w #' ',-(sp)
move.w #2,-(sp)
trap #1
addq.l #4,sp
rts
*************puts my mouse interupt in*****************
putrout:move.w #34,-(sp)
trap #14
addq.l #2,sp
move.l d0,a0
move.l 16(a0),oldmouse
move.l #myrout,16(a0)
rts
**************my ubeut mouse interupt*******************
myrout:
movem.l d0-d1/a0,-(sp)
moveq #0,d0
move.b (a0),d0
cmpi.b #$fa,d0
bne myr1
move.w #1,buttondat
bra myrxy
myr1:
cmpi.b #$f9,d0
bne myr2
move.w #2,buttondat
bra myrxy
myr2:
cmpi.b #$fb,d0
bne myr3
move.w #3,buttondat
bra myrxy
myr3:
move.w #0,buttondat
myrxy:
moveq #0,d0
move.b 1(a0),d0
ext.w d0
moveq #0,d1
move.b 2(a0),d1
ext.w d1
add.w d0,mx
add.w d1,mmy
move.w mx,d0
move.w mmy,d1
bsr extra
move.w d0,mx
move.w d1,mmy
movem.l (sp)+,d0-d1/a0
rts
extra: cmp.w mmin,d0
bge .S extra1
move.w mmax2,d0
bra .S extra2
extra1: cmp.w mmax,d0
ble .S extra2
move.w mmin2,d0
extra2: tst.w d1
bge .S extra3
move.w #199,d1
rts
extra3: cmp.w #199,d1
ble .S extra4
move.w #0,d1
extra4: rts
mmin: blk.w 1,0
mmax: blk.w 1,0
mx: blk.w 1,0
mmy: blk.w 1,0
buttondat:
blk.w 1,0
************get screen address***************
getscrn:move.w #2,-(sp)
trap #14
addq.l #2,sp
move.l d0,screen
move.l d0,screen1
move.l d0,screen2
subi.l #$8000,screen2
move.l screen2,screen3
subi.l #$8000,screen3
move.l screen3,screen4
subi.l #$8000,screen4
move.l screen1,seen
move.l screen2,hiden
move.l #ytable1,sytable
move.l #ytable2,ytable
rts
screen4: blk.l 1,0
************change colors****************
colors: move.l #palette,-(sp)
move.w #6,-(sp)
trap #14
addq.l #6,sp
rts
************change colors****************
darkcolors:
move.l #palette2,-(sp)
move.w #6,-(sp)
trap #14
addq.l #6,sp
rts
*****************wait for a key*********************
wait: move.w $26e6,d0
cmpi.w #2,d0
beq wback
bra wait
wback: rts
***************turn mouse off***********************
mousof: dc.w $a00a
rts
*******************************************************************
; SYSNOPSIS
; RandomSeed( SeedValue )
; D0
randomseed: ADD.L D0,D1 ;user seed in d0 (d1 too)
MOVEM.L D0/D1,RND
; drops through to the main random function (not user callable)
LongRnd: MOVEM.L D2-D3,-(SP)
MOVEM.L RND,D0/D1 ;D0=LSB's, D1=MSB's of random number
ANDI.B #$0E,D0 ;ensure upper 59 bits are an...
ORI.B #$20,D0 ;...odd binary number
MOVE.L D0,D2
MOVE.L D1,D3
ADD.L D2,D2 ;accounts for 1 of 17 left shifts
ADDX.L D3,D3 ;[D2/D3] = RND*2
ADD.L D2,D0
ADDX.L D3,D1 ;[D0/D1] = RND*3
SWAP D3 ;shift [D2/D3] additional 16 times
SWAP D2
MOVE.W D2,D3
CLR.W D2
ADD.L D2,D0 ;add to [D0/D1]
ADDX.L D3,D1
MOVEM.L D0/D1,RND ;save for next time through
MOVE.L D1,D0 ;most random part to D0
MOVEM.L (SP)+,D2-D3
RTS
; SYSNOPSIS
; RndNum = Random( UpperLimit )
; D0 D0
random: MOVE.W D2,-(SP)
MOVE.W D0,D2 ;save upper limit
BEQ.S r1 ;range of 0 returns 0 always
BSR.S LongRnd ;get a longword random number
CLR.W D0 ;use upper word (it's most random)
SWAP D0
ext.l d0
DIVs D2,D0 ;divide by range...
CLR.W D0 ;...and use remainder for the value
SWAP D0 ;result in D0.W
r1: MOVE.W (SP)+,D2
RTS
randomplus: MOVE.W D2,-(SP)
MOVE.W D0,D2 ;save upper limit
BEQ.S r2 ;range of 0 returns 0 always
BSR.S LongRnd ;get a longword random number
CLR.W D0 ;use upper word (it's most random)
SWAP D0
DIVu D2,D0 ;divide by range...
CLR.W D0 ;...and use remainder for the value
SWAP D0 ;result in D0.W
r2: MOVE.W (SP)+,D2
RTS
*********************************************************
* a brilliant routine courtesy of janko to *
* insert the vbi addresses in the jump table *
* lea address of routine in a0 do a jsr *
* putvbl and thats it!!! *
*********************************************************
putvbl: lea $452,a1
move.w #1,(a1)
moveq #7,d1
lea $456,a1
move.l (a1),a1
vbl3: subq.b #1,d1
cmpi.b #0,d1
beq.s vbl4
move.l (a1)+,d0
cmpi.l #0,d0
bne.S vbl3
suba.l #4,a1
move.l a0,(a1)
vbl4: rts
*********************************************************
* my routines for loading in the screens *
* note i use degas format even though I *
* hate the package,due to it's simple format *
* ie: 32l for pallette and straight 32k screen *
* dump *
*********************************************************
loadscr:move #0,-(SP) ;Open file
move.l #filename,-(SP) ;Address of filename
move #$3D,-(SP)
trap #1 ;Get handle number in D0
addq.l #8,SP
move D0,-(SP) ;Save handle
move.l #sounds,-(SP) ;load pallette into safe area
move.l #128,-(SP) ;length to read in
move D0,-(SP) ;Handle
move #$3F,-(SP) ;bios number
trap #1 ;Read file in
addi.l #12,SP
move (sp),d0
move.l screen4,-(SP) ;load it straight onto screen
move.l #32000,-(SP) ;length to read in
move D0,-(SP) ;Handle
move #$3F,-(SP) ;bios number
trap #1 ;Read file in
addi.l #12,SP
move #$3E,-(SP) ;Handle already on stack
trap #1 ;Close file
addq.l #4,SP
rts
*********************************
loadsounds:
move #0,-(SP) ;Open file
move.l #filesounds,-(SP) ;Address of filename
move #$3D,-(SP)
trap #1 ;Get handle number in D0
addq.l #8,SP
move D0,-(SP) ;Save handle
move.l #sounds,-(SP) ;load pallette into safe area
move.l #41150,-(SP) ;length to read in
move D0,-(SP) ;Handle
move #$3F,-(SP) ;bios number
trap #1 ;Read file in
addi.l #12,SP
move (sp),d0
move #$3E,-(SP) ;Handle already on stack
trap #1 ;Close file
addq.l #4,SP
move.l #sounds,d0
add.l #0,d0
move.l d0,shoot1s
move.l #sounds,d0
add.l #1256,d0
move.l d0,shoot1b
move.l #sounds,d0
add.l #1258,d0
move.l d0,shoot0s
move.l #sounds,d0
add.l #2652,d0
move.l d0,shoot0b
move.l #sounds,d0
add.l #2652,d0
move.l d0,laughs
move.l #sounds,d0
add.l #9430,d0
move.l d0,laughb
move.l #sounds,d0
add.l #9430,d0
move.l d0,pays
move.l #sounds,d0
add.l #18419,d0
move.l d0,payb
move.l #sounds,d0
add.l #18420,d0
move.l d0,appears
move.l #sounds,d0
add.l #20270,d0
move.l d0,appearb
move.l #sounds,d0
add.l #20278,d0
move.l d0,rewards
move.l #sounds,d0
add.l #24963,d0
move.l d0,rewardb
move.l #sounds,d0
add.l #24963,d0
move.l d0,booms
move.l #sounds,d0
add.l #27664,d0
move.l d0,boomb
move.l #sounds,d0
add.l #27664,d0
move.l d0,bigbooms
move.l #sounds,d0
add.l #41149,d0
move.l d0,bigboomb
rts
filesounds: dc.b 'all.spl',0
even
shoot0s: blk.l 1,0
shoot0b: blk.l 1,0
shoot1s: blk.l 1,0
shoot1b: blk.l 1,0
laughs: blk.l 1,0
laughb: blk.l 1,0
pays: blk.l 1,0
payb: blk.l 1,0
appears: blk.l 1,0
appearb: blk.l 1,0
rewards: blk.l 1,0
rewardb: blk.l 1,0
booms: blk.l 1,0
boomb: blk.l 1,0
bigbooms: blk.l 1,0
bigboomb: blk.l 1,0
loadmusic:
move #0,-(SP) ;Open file
move.l #filemusic,-(SP) ;Address of filename
move #$3D,-(SP)
trap #1 ;Get handle number in D0
addq.l #8,SP
move D0,-(SP) ;Save handle
move.l #sounds,-(SP) ;load pallette into safe area
move.l #50081,-(SP) ;length to read in
move D0,-(SP) ;Handle
move #$3F,-(SP) ;bios number
trap #1 ;Read file in
addi.l #12,SP
move (sp),d0
move #$3E,-(SP) ;Handle already on stack
trap #1 ;Close file
addq.l #4,SP
rts
filemusic: dc.b 'music3.spl',0
even
sounds: blk.b 60731,0
even
*********************************************************
loadballs:move #0,-(SP) ;Open file
move.l #fileballs,-(SP) ;Address of filename
move #$3D,-(SP)
trap #1 ;Get handle number in D0
addq.l #8,SP
move D0,-(SP) ;Save handle
move.l #dummy,-(SP) ;load pallette into safe area
move.l #128,-(SP) ;length to read in
move D0,-(SP) ;Handle
move #$3F,-(SP) ;bios number
trap #1 ;Read file in
addi.l #12,SP
move (sp),d0
move.l screen3,-(SP) ;load it straight onto screen
move.l #32000,-(SP) ;length to read in
move D0,-(SP) ;Handle
move #$3F,-(SP) ;bios number
trap #1 ;Read file in
addi.l #12,SP
move #$3E,-(SP) ;Handle already on stack
trap #1 ;Close file
addq.l #4,SP
rts
fileballs:
dc.b 'qballs.neo',0
even
******************************
loadcorners:
move #0,-(SP) ;Open file
move.l #filecorn,-(SP) ;Address of filename
move #$3D,-(SP)
trap #1 ;Get handle number in D0
addq.l #8,SP
move D0,-(SP) ;Save handle
move.l #dummy,-(SP) ;load pallette into safe area
move.l #128,-(SP) ;length to read in
move D0,-(SP) ;Handle
move #$3F,-(SP) ;bios number
trap #1 ;Read file in
addi.l #12,SP
move (sp),d0
move.l screen3,-(SP) ;load it straight onto screen
move.l #32000,-(SP) ;length to read in
move D0,-(SP) ;Handle
move #$3F,-(SP) ;bios number
trap #1 ;Read file in
addi.l #12,SP
move #$3E,-(SP) ;Handle already on stack
trap #1 ;Close file
addq.l #4,SP
rts
filecorn:
dc.b 'qcorner.neo',0
even
*******************blocks for rotated sprites*************
screen3:blk.l 1,0
pblock: blk.l 50
screen: blk.l 1
off: blk.w 1
ynflg: blk.w 1
screen2:blk.l 1
screen1:blk.l 1
dummy: blk.l 32
xvel: blk.w 1
yvel: blk.w 1
brhits: blk.w 1,0
filename: dc.b 'qtitle.neo',0
even
line: blk.b 10
pos: blk.l 1
col: blk.l 1
number: blk.w 1
whichblock: blk.l 1,0
shipx: blk.w 1,0
shipy: blk.w 1,0
shootx: blk.w 1,0
shooty: blk.w 1,0
bigshootx: blk.w 1,0
bigshooty: blk.w 1,0
shotxvel: blk.w 1,0
shotyvel: blk.w 1,0
levpos: dc.b 27,89,41,64,0
scorepos: dc.b 27,89,38,64,0
shippos: dc.b 27,89,45,65,0
backcol: dc.b 27,99,2,0
greencol: dc.b 27,98,10,0
even
ships: blk.w 1,0
intin: blk.l 1
ptsin: blk.l 1
putpix: equ $a001
getpix: equ $a002
seen: blk.l 1
hiden: blk.l 1
bigflg: blk.w 1,-1
palette2:
dc.w $0000,$0000,$0000
dc.w $0000,$0000,$0000
dc.w $0000,$0000,$0000
dc.w $0000,$0000,$0000
dc.w $0000,$0000,$0000
dc.w $0000
illegal
*************************************STORAGE*******************************
shooting: blk.w 1,-1
rnd: blk.l 2,0
beatflg: blk.w 1,0
speed: blk.w 1,0
brtimer: blk.w 1,0
lastbr: blk.w 1,0
grtimer: blk.w 1,0
levsp: blk.l 1,0
levtim: blk.w 1,0
pdflg: blk.w 1,0
my: blk.w 1,0
whsp: blk.l 1,0
tempsp: blk.w 500,0
oldsp: blk.w 1,-1
oldht: blk.w 1,0
oldwt: blk.w 1,0
oldscr: blk.l 1,0
tempsh: blk.l 1,0
score: blk.w 1,0
level: blk.w 1,0
oldmouse: blk.l 1,0
linepar: blk.l 1,0
mmin2: blk.w 1,0
mmax2: blk.w 1,0
byebye: blk.w 1,-1
blockad: blk.l 1,0
* Hardware color pallet (color 0 to 15):
palette:dc.w $0000,$0777,$0555,$0333,$0007,$0005,$0003,$0750
dc.w $0630,$0420,$0070,$0050,$0030,$0707,$0606,$0404
fade1: dc.w $0000,$0666,$0444,$0222,$0006,$0004,$0002,$0640
dc.w $0520,$0310,$0060,$0040,$0020,$0606,$0505,$0303
fade2: dc.w $0000,$0555,$0333,$0111,$0005,$0003,$0001,$0530
dc.w $0410,$0200,$0050,$0030,$0010,$0505,$0404,$0202
fade3: dc.w $0000,$0444,$0222,$0000,$0004,$0002,$0000,$0420
dc.w $0300,$0100,$0040,$0020,$0000,$0404,$0303,$0101
fade4: dc.w $0000,$0333,$0111,$0000,$0003,$0001,$0000,$0310
dc.w $0200,$0000,$0030,$0010,$0000,$0303,$0202,$0000
fade5: dc.w $0000,$0222,$0000,$0000,$0002,$0000,$0000,$0200
dc.w $0100,$0000,$0020,$0000,$0000,$0202,$0101,$0000
fade6: dc.w $0000,$0111,$0000,$0000,$0001,$0000,$0000,$0100
dc.w $0000,$0000,$0010,$0000,$0000,$0101,$0000,$0000
fade7: dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
boomcols:
dc.w $0100,$0200,$0300,$0400,$0500,$0600,$0700
dc.w $0600,$0500,$0400,$0300,$0200,$0100,$0000
panel: dc.w $6060,$7F80,$801F,$0000,$0000,$0000,$FFFF,$0000
dc.w $0000,$0000,$FFFF,$0000,$0000,$0000,$FFFF,$0000
dc.w $0000,$0000,$FFFF,$0000,$0183,$01FC,$FE00,$0000
dc.w $6060,$7F80,$8010,$0000,$0000,$0000,$4104,$0000
dc.w $0000,$0000,$1041,$0000,$0000,$0000,$0410,$0000
dc.w $0000,$0000,$4104,$0000,$0183,$01FC,$1000,$0000
ship0: dc.w $0E00,$0000,$0001,$0000,$0070,$0000,$8000,$0000
dc.w $1EC2,$0CC2,$0001,$0000,$4378,$4330,$8000,$0000
dc.w $3CFE,$1EBC,$0001,$0000,$7F3C,$3D78,$8000,$0000
dc.w $7CFE,$3E81,$0000,$0000,$7F3E,$817C,$0000,$0000
dc.w $FC80,$02FF,$0000,$0000,$013F,$FF40,$0000,$0000
dc.w $0080,$FEFF,$0000,$0000,$0100,$FF7F,$0000,$0000
dc.w $80C0,$E2C0,$1C3F,$0000,$0301,$0347,$FC38,$0000
dc.w $C2FF,$DEFF,$2000,$0000,$FF43,$FF7B,$0004,$0000
dc.w $7EFF,$3EFF,$4000,$0000,$FF7E,$FF7C,$0002,$0000
dc.w $3E00,$3E00,$0000,$0000,$007C,$007C,$0000,$0000
ship3: dc.w $3400,$3800,$0000,$0000,$6600,$3800,$4000,$0000
dc.w $C700,$DA00,$2000,$0000,$C780,$EB00,$1000,$0000
dc.w $C7C0,$EB80,$1000,$0000,$C7C0,$EB80,$1000,$0000
dc.w $E0C0,$FF00,$0000,$0000,$0000,$0000,$0000,$0000
dc.w $7F80,$7F80,$0000,$0000,$7380,$7C80,$0000,$0000
dc.w $6300,$6D00,$1000,$0000,$6300,$6D00,$1000,$0000
dc.w $6300,$6D00,$1000,$0000,$6300,$6D00,$1000,$0000
dc.w $6380,$6C80,$1000,$0000,$6000,$6E00,$11C0,$0000
dc.w $6000,$6E00,$11C0,$0000,$6380,$6C80,$1000,$0000
dc.w $6300,$6D00,$1000,$0000,$6300,$6D00,$1000,$0000
dc.w $6300,$6D00,$1000,$0000,$6300,$6D00,$1000,$0000
dc.w $7380,$7C80,$0000,$0000,$7F80,$7F80,$0000,$0000
dc.w $0000,$0000,$0000,$0000,$E0C0,$FF00,$0000,$0000
dc.w $C7C0,$EB80,$1000,$0000,$C7C0,$EB80,$1000,$0000
dc.w $C780,$EB00,$1000,$0000,$C700,$DA00,$2000,$0000
dc.w $6600,$3800,$4000,$0000,$3400,$3800,$0000,$0000
ship2: dc.w $3E00,$3E00,$0000,$0000,$007C,$007C,$0000,$0000
dc.w $7EFF,$3EFF,$4000,$0000,$FF7E,$FF7C,$0002,$0000
dc.w $C2FF,$DEFF,$2000,$0000,$FF43,$FF7B,$0004,$0000
dc.w $80C0,$E2C0,$1C3F,$0000,$0301,$0347,$FC38,$0000
dc.w $0080,$FEFF,$0000,$0000,$0100,$FF7F,$0000,$0000
dc.w $FC80,$02FF,$0000,$0000,$013F,$FF40,$0000,$0000
dc.w $7CFE,$3E81,$0000,$0000,$7F3E,$817C,$0000,$0000
dc.w $3CFE,$1EBC,$0001,$0000,$7F3C,$3D78,$8000,$0000
dc.w $1EC2,$0CC2,$0001,$0000,$4378,$4330,$8000,$0000
dc.w $0E00,$0000,$0001,$0000,$0070,$0000,$8000,$0000
ship1: dc.w $0B00,$0700,$0000,$0000,$1980,$0700,$0080,$0000
dc.w $38C0,$16C0,$0100,$0000,$78C0,$35C0,$0200,$0000
dc.w $F8C0,$75C0,$0200,$0000,$F8C0,$75C0,$0200,$0000
dc.w $C1C0,$3FC0,$0000,$0000,$0000,$0000,$0000,$0000
dc.w $7F80,$7F80,$0000,$0000,$7380,$4F80,$0000,$0000
dc.w $3180,$2D80,$0200,$0000,$3180,$2D80,$0200,$0000
dc.w $3180,$2D80,$0200,$0000,$3180,$2D80,$0200,$0000
dc.w $7180,$4D80,$0200,$0000,$0180,$1D80,$E200,$0000
dc.w $0180,$1D80,$E200,$0000,$7180,$4D80,$0200,$0000
dc.w $3180,$2D80,$0200,$0000,$3180,$2D80,$0200,$0000
dc.w $3180,$2D80,$0200,$0000,$3180,$2D80,$0200,$0000
dc.w $7380,$4F80,$0000,$0000,$7F80,$7F80,$0000,$0000
dc.w $0000,$0000,$0000,$0000,$C1C0,$3FC0,$0000,$0000
dc.w $F8C0,$75C0,$0200,$0000,$F8C0,$75C0,$0200,$0000
dc.w $78C0,$35C0,$0200,$0000,$38C0,$16C0,$0100,$0000
dc.w $1980,$0700,$0080,$0000,$0B00,$0700,$0000,$0000
bat0: dc.w $0E18,$01E7,$0118,$0000,$1870,$E780,$1880,$0000
dc.w $1EE7,$0D00,$0118,$0000,$E778,$00B0,$1880,$0000
dc.w $3CE7,$1F00,$0118,$0000,$E73C,$00F8,$1880,$0000
dc.w $7C67,$3F80,$0118,$0000,$E63E,$01FC,$1880,$0000
dc.w $FC98,$03E7,$0118,$0000,$193F,$E7C0,$1880,$0000
dc.w $00D8,$FFE7,$0118,$0000,$1B00,$E7FF,$1880,$0000
dc.w $80E7,$E3FF,$1D18,$0000,$E701,$FFC7,$18B8,$0000
dc.w $C2E7,$DFFF,$2118,$0000,$E743,$FFFB,$1884,$0000
dc.w $7EE7,$3FFF,$4118,$0000,$E77E,$FFFC,$1882,$0000
dc.w $3E00,$3E00,$0000,$0000,$007C,$007C,$0000,$0000
bat3: dc.w $3400,$3800,$0000,$0000,$6600,$3800,$4000,$0000
dc.w $C700,$DA00,$2000,$0000,$C780,$EB00,$1000,$0000
dc.w $C7C0,$EB80,$1000,$0000,$C7C0,$EB80,$1000,$0000
dc.w $E0C0,$FF00,$0000,$0000,$0000,$7FC0,$7FC0,$0000
dc.w $7D80,$7E40,$0000,$0000,$7B80,$7C40,$0000,$0000
dc.w $7380,$7C40,$0000,$0000,$0C40,$7000,$7FC0,$0000
dc.w $0C40,$7000,$7FC0,$0000,$7380,$7C40,$0000,$0000
dc.w $7380,$7C40,$0000,$0000,$7380,$7C40,$0000,$0000
dc.w $7380,$7C40,$0000,$0000,$7380,$7C40,$0000,$0000
dc.w $7380,$7C40,$0000,$0000,$0C40,$7000,$7FC0,$0000
dc.w $0C40,$7000,$7FC0,$0000,$7380,$7C40,$0000,$0000
dc.w $7B80,$7C40,$0000,$0000,$7D80,$7E40,$0000,$0000
dc.w $0000,$7FC0,$7FC0,$0000,$E0C0,$FF00,$0000,$0000
dc.w $C7C0,$EB80,$1000,$0000,$C7C0,$EB80,$1000,$0000
dc.w $C780,$EB00,$1000,$0000,$C700,$DA00,$2000,$0000
dc.w $6600,$3800,$4000,$0000,$3400,$3800,$0000,$0000
bat2: dc.w $3E00,$3E00,$0000,$0000,$007C,$007C,$0000,$0000
dc.w $7EE7,$3FFF,$4118,$0000,$E77E,$FFFC,$1882,$0000
dc.w $C2E7,$DFFF,$2118,$0000,$E743,$FFFB,$1884,$0000
dc.w $80E7,$E3FF,$1D18,$0000,$E701,$FFC7,$18B8,$0000
dc.w $00D8,$FFE7,$0118,$0000,$1B00,$E7FF,$1880,$0000
dc.w $FC98,$03E7,$0118,$0000,$193F,$E7C0,$1880,$0000
dc.w $7C67,$3F80,$0118,$0000,$E63E,$01FC,$1880,$0000
dc.w $3CE7,$1F00,$0118,$0000,$E73C,$00F8,$1880,$0000
dc.w $1EE7,$0D00,$0118,$0000,$E778,$00B0,$1880,$0000
dc.w $0E18,$01E7,$0118,$0000,$1870,$E780,$1880,$0000
bat1: dc.w $0B00,$0700,$0000,$0000,$1980,$0700,$0080,$0000
dc.w $38C0,$16C0,$0100,$0000,$78C0,$35C0,$0200,$0000
dc.w $F8C0,$75C0,$0200,$0000,$F8C0,$75C0,$0200,$0000
dc.w $C1C0,$3FC0,$0000,$0000,$0000,$FF80,$FF80,$0000
dc.w $6F80,$9F80,$0000,$0000,$7780,$8F80,$0000,$0000
dc.w $7380,$8F80,$0000,$0000,$8C00,$0380,$FF80,$0000
dc.w $8C00,$0380,$FF80,$0000,$7380,$8F80,$0000,$0000
dc.w $7380,$8F80,$0000,$0000,$7380,$8F80,$0000,$0000
dc.w $7380,$8F80,$0000,$0000,$7380,$8F80,$0000,$0000
dc.w $7380,$8F80,$0000,$0000,$8C00,$0380,$FF80,$0000
dc.w $8C00,$0380,$FF80,$0000,$7380,$8F80,$0000,$0000
dc.w $7780,$8F80,$0000,$0000,$6F80,$9F80,$0000,$0000
dc.w $0000,$FF80,$FF80,$0000,$C1C0,$3FC0,$0000,$0000
dc.w $F8C0,$75C0,$0200,$0000,$F8C0,$75C0,$0200,$0000
dc.w $78C0,$35C0,$0200,$0000,$38C0,$16C0,$0100,$0000
dc.w $1980,$0700,$0080,$0000,$0B00,$0700,$0000,$0000
bbrain: dc.w $7FFF,$8000,$0000,$0000,$FFFF,$0000,$0000,$0000
dc.w $8000,$FFF0,$0000,$000F,$1001,$0FFE,$0000,$F000
dc.w $8035,$FF85,$0005,$007A,$A201,$81FE,$8000,$7E00
dc.w $8434,$FC04,$0004,$03FB,$4B01,$483E,$4800,$B7C0
dc.w $8F55,$F844,$0044,$07BB,$A5C1,$241E,$2400,$DBE0
dc.w $9F2A,$F022,$0022,$0FDD,$5AF1,$420E,$4200,$BDF0
dc.w $B7DD,$E0C1,$00C1,$1F3E,$94E9,$8406,$8400,$7BF8
dc.w $FB20,$C100,$0100,$3EFF,$2315,$2312,$2310,$DCEC
dc.w $FB5E,$C31E,$031E,$3CE1,$58DD,$58DA,$58D8,$A724
dc.w $F021,$8021,$0021,$7FDE,$A4C3,$84C0,$84C0,$7B3E
dc.w $EBCA,$83C2,$03C2,$7C3D,$5B2F,$4220,$4220,$BDDE
dc.w $FBCA,$83C2,$03C2,$7C3D,$5B2F,$4220,$4220,$BDDE
dc.w $EE35,$8030,$0030,$7FCF,$B52F,$0420,$0420,$FBDE
dc.w $E449,$0009,$0009,$FFF6,$E4D9,$E4C0,$E4C0,$1B3F
dc.w $DB96,$0386,$0386,$FC79,$1224,$1224,$1224,$EDDB
dc.w $C561,$0060,$0060,$FF9F,$D529,$1128,$1128,$EED7
dc.w $ED8E,$000E,$000E,$FFF1,$522B,$1228,$1228,$EDD7
dc.w $C751,$0311,$0311,$FCEE,$9217,$9210,$9210,$6DEF
dc.w $CEAA,$0088,$0088,$FF77,$4CC9,$4CC0,$4CC0,$B33F
dc.w $FB95,$0084,$0084,$FF7B,$A0D1,$20C0,$20C0,$DF3F
dc.w $F54A,$8002,$0002,$7FFD,$2B83,$2380,$2380,$DC7E
dc.w $F465,$8001,$0001,$7FFE,$9887,$9880,$9880,$677E
dc.w $FA45,$8001,$0001,$7FFE,$192F,$1900,$1900,$E6FE
dc.w $FEC8,$8000,$0000,$7FFF,$617F,$0000,$0000,$FFFE
dc.w $FFA4,$C000,$0000,$3FFF,$CA5D,$0002,$0000,$FFFC
dc.w $FFF7,$C000,$0000,$3FFF,$9C5D,$0002,$0000,$FFFC
dc.w $FFCE,$E000,$0000,$1FFF,$59FD,$0006,$0000,$FFF8
dc.w $FFF6,$F000,$0000,$0FFF,$7FF9,$000E,$0000,$FFF0
dc.w $FFFF,$F800,$0000,$07FF,$FFF9,$001E,$0000,$FFE0
dc.w $FFFF,$FC00,$0000,$03FF,$FFF1,$003E,$0000,$FFC0
dc.w $BFFF,$FF80,$0000,$007F,$FFE1,$01FE,$0000,$FE00
dc.w $FFFF,$FFF0,$0000,$000F,$FFFE,$0FFF,$0000,$F000
lbrain: dc.w $7FFF,$8000,$0000,$0000,$FFFF,$0000,$0000,$0000
dc.w $8000,$FFFF,$0000,$0000,$0001,$FFFE,$0000,$0000
dc.w $8000,$FFF0,$0000,$000F,$2001,$1FFE,$0000,$E000
dc.w $81B5,$FF85,$0005,$007A,$4401,$03FE,$0000,$FC00
dc.w $8234,$FE04,$0004,$01FB,$9601,$90FE,$9000,$6F00
dc.w $8F55,$FC44,$0044,$03BB,$4B01,$487E,$4800,$B780
dc.w $9B2A,$F822,$0022,$07DD,$B5C1,$843E,$8400,$7BC0
dc.w $BADD,$F0C1,$00C1,$0F3E,$29A1,$081E,$0800,$F7E0
dc.w $FD20,$E100,$0100,$1EFF,$4651,$464E,$4640,$B9B0
dc.w $FD5E,$E11E,$011E,$1EE1,$B171,$B16E,$B160,$4E90
dc.w $EA21,$C221,$0221,$3DDE,$4909,$0906,$0900,$F6F8
dc.w $E5CA,$C1C2,$01C2,$3E3D,$B6B9,$8486,$8480,$7B78
dc.w $EA35,$C830,$0830,$37CF,$6AB9,$0886,$0880,$F778
dc.w $F649,$8409,$0409,$7BF6,$C965,$C902,$C900,$36FC
dc.w $ED96,$8186,$0186,$7E79,$2491,$2492,$2490,$DB6C
dc.w $EA61,$8260,$0260,$7D9F,$AAA5,$22A2,$22A0,$DD5C
dc.w $F28E,$800E,$000E,$7FF1,$A4AD,$24A2,$24A0,$DB5C
dc.w $E951,$8111,$0111,$7EEE,$245D,$2442,$2440,$DBBC
dc.w $EFAA,$8088,$0088,$7F77,$9925,$9902,$9900,$66FC
dc.w $EE95,$8084,$0084,$7F7B,$414D,$4102,$4100,$BEFC
dc.w $FB6A,$C022,$0022,$3FDD,$5729,$4726,$4720,$B8D8
dc.w $F5D5,$C111,$0111,$3EEE,$3099,$3086,$3080,$CF78
dc.w $FDEA,$C002,$0002,$3FFD,$CAB9,$0886,$0880,$F778
dc.w $FE4D,$E004,$0004,$1FFB,$B471,$300E,$3000,$CFF0
dc.w $FDC3,$E000,$0000,$1FFF,$C931,$400E,$4000,$BFF0
dc.w $FFDC,$F000,$0000,$0FFF,$35E1,$001E,$0000,$FFE0
dc.w $FFF1,$F800,$0000,$07FF,$6BE1,$003E,$0000,$FFC0
dc.w $FF9E,$FC00,$0000,$03FF,$BBC1,$007E,$0000,$FF80
dc.w $FFF4,$FE00,$0000,$01FF,$BF81,$00FE,$0000,$FF00
dc.w $BFFF,$FF80,$0000,$007F,$FF01,$03FE,$0000,$FC00
dc.w $BFFF,$FFF0,$0000,$000F,$FC01,$1FFE,$0000,$E000
dc.w $FFFF,$FFFF,$0000,$0000,$FFFE,$FFFF,$0000,$0000
eyebrain:
dc.w $7FFF,$8000,$0000,$0000,$FFFF,$0000,$0000,$0000
dc.w $8000,$FFFF,$0000,$0000,$0001,$FFFE,$0000,$0000
dc.w $8000,$FFF0,$0000,$000F,$2001,$1FFE,$0000,$E000
dc.w $81B5,$FF85,$0005,$007A,$4401,$03FE,$0000,$FC00
dc.w $8234,$FE04,$0004,$01FB,$9601,$90FE,$9000,$6F00
dc.w $8F55,$FC44,$0044,$03BB,$4B01,$487E,$4800,$B780
dc.w $9B2E,$F826,$0026,$07D9,$F5C1,$C43E,$C400,$3BC0
dc.w $BAF0,$F0F0,$00F0,$0F0F,$39A1,$381E,$3800,$C7E0
dc.w $FD27,$E100,$0100,$1EFF,$C651,$064E,$0640,$F9B0
dc.w $FD5D,$E100,$0100,$1EFA,$F171,$016E,$0160,$3E90
dc.w $EA3B,$C200,$0200,$3DE4,$D909,$0106,$0100,$2EF8
dc.w $E47F,$C000,$0000,$3FC0,$EEB9,$0086,$0080,$1778
dc.w $EABE,$CA40,$0A03,$3580,$1EB9,$0086,$C080,$2378
dc.w $F4FF,$8400,$040F,$7BC0,$CE65,$0042,$F040,$03BC
dc.w $ED4F,$8480,$040F,$7B30,$EF51,$0052,$F050,$01AC
dc.w $ED6C,$8490,$041E,$7B00,$7565,$0062,$3860,$039C
dc.w $F768,$8490,$041C,$7B00,$376D,$0062,$3860,$019C
dc.w $EF68,$8490,$041C,$7B00,$3F5D,$0042,$3840,$01BC
dc.w $EB28,$8090,$001E,$7F40,$1F25,$0002,$7800,$01FC
dc.w $EBB4,$8048,$000F,$7F80,$2E4D,$1042,$F040,$03BC
dc.w $FB93,$C06C,$000F,$3F80,$C2A9,$34A6,$F0A0,$0B58
dc.w $F5C0,$C03F,$0003,$3FC0,$3499,$C886,$C080,$0778
dc.w $FDE2,$C01D,$0000,$3FE2,$08B9,$F086,$0080,$0F78
dc.w $FE7D,$E002,$0000,$1FFD,$3171,$C10E,$0100,$3EF0
dc.w $FD1F,$E000,$0000,$1FFF,$E331,$020E,$0200,$FDF0
dc.w $FFDF,$F000,$0000,$0FFF,$C5E1,$001E,$0000,$FFE0
dc.w $FFE0,$F800,$0000,$07FF,$0BE1,$003E,$0000,$FFC0
dc.w $FF9E,$FC00,$0000,$03FF,$BBC1,$007E,$0000,$FF80
dc.w $FFF4,$FE00,$0000,$01FF,$BF81,$00FE,$0000,$FF00
dc.w $BFFF,$FF80,$0000,$007F,$FF01,$03FE,$0000,$FC00
dc.w $BFFF,$FFF0,$0000,$000F,$FC01,$1FFE,$0000,$E000
dc.w $FFFF,$FFFF,$0000,$0000,$FFFE,$FFFF,$0000,$0000
spxy: dc.w 0,176,190,0,175,190,0,174,190,0,173,190
dc.w 0,172,190,0,171,190,0,170,190,0,169,190
dc.w 0,168,190,0,167,190,0,166,190,0,165,190
dc.w 0,164,190,0,163,190,0,162,190,0,163,190
dc.w 0,162,190,0,161,190,0,160,190,0,159,190
dc.w 0,158,190,0,157,190,0,156,190,0,155,190
dc.w 0,154,190,0,153,190,0,152,190,0,151,190
dc.w 0,150,190,0,149,190,0,148,190,0,147,190
dc.w 0,146,190,0,145,190,0,144,190,0,143,190
dc.w 0,142,190,0,141,190,0,140,190,0,139,190
dc.w 0,138,190,0,137,190,0,136,190,0,135,190
dc.w 0,134,190,0,133,190,0,132,190,0,131,190
dc.w 0,130,190,0,129,190,0,128,190,0,127,190
dc.w 0,126,190,0,125,190,0,124,190,0,123,190
dc.w 0,122,190,0,121,190,0,120,190,0,119,190
dc.w 0,118,190,0,117,190,0,116,190,0,115,190
dc.w 0,114,190,0,113,190,0,112,190,0,111,190
dc.w 0,110,190,0,109,190,0,108,190,0,107,190
dc.w 0,106,190,0,105,190,0,104,190,0,103,190
dc.w 0,102,190,0,101,190,0,100,190,0,99,190
dc.w 0,98,190
dc.w 0,97,190,0,96,190,0,95,190,0,94,190
dc.w 0,93,190,0,92,190,0,91,190,0,90,190
dc.w 0,89,190,0,88,190,0,87,190,0,86,190
dc.w 0,85,190,0,84,190,0,83,190,0,82,190
dc.w 0,81,190,0,80,190,0,79,190,0,78,190
dc.w 0,77,190,0,76,190,0,75,190,0,74,190
dc.w 0,73,190,0,72,190,0,71,190,0,70,190
dc.w 0,69,190,0,68,190,0,67,190,0,66,190
dc.w 0,65,190,0,64,190,0,63,190,0,62,190
dc.w 0,61,190,0,60,190,0,59,190,0,58,190
dc.w 0,57,190,0,56,190,0,55,190,0,54,190
dc.w 0,53,190,0,52,190,0,51,190,0,50,190
dc.w 0,49,190,0,48,190,0,47,190,0,46,190
dc.w 0,45,190,0,44,190,0,43,190,0,42,190
dc.w 0,41,190,0,40,190,0,39,190,0,38,190
dc.w 0,37,190,0,36,190,0,35,190,0,34,190
dc.w 0,33,190,0,32,190,0,31,190,0,30,190
dc.w 0,29,190,0,28,190,0,27,190,0,26,190
dc.w 0,25,190,0,24,190,0,23,190,0,22,190
dc.w 0,21,190,0,20,190,0,19,190,0,18,190
dc.w 0,17,190,0,16,190
dc.w 1,0,151,1,0,150,1,0,149
dc.w 1,0,148,1,0,147,1,0,146,1,0,145,1,0,144
dc.w 1,0,143,1,0,142,1,0,141
dc.w 1,0,140
dc.w 1,0,139,1,0,138,1,0,137,1,0,136,1,0,135
dc.w 1,0,134,1,0,133,1,0,132,1,0,131,1,0,130
dc.w 1,0,129,1,0,128,1,0,127,1,0,126,1,0,125
dc.w 1,0,124,1,0,123,1,0,122,1,0,121,1,0,120
dc.w 1,0,119,1,0,118,1,0,117,1,0,116,1,0,115
dc.w 1,0,114,1,0,113,1,0,112,1,0,111,1,0,110
dc.w 1,0,109,1,0,108,1,0,107,1,0,106,1,0,105
dc.w 1,0,104,1,0,103,1,0,102,1,0,101,1,0,100
dc.w 1,0,99,1,0,98,1,0,97,1,0,96,1,0,95,1,0,94
dc.w 1,0,93,1,0,92,1,0,91,1,0,90,1,0,89,1,0,88
dc.w 1,0,87,1,0,86,1,0,85,1,0,84,1,0,83,1,0,82
dc.w 1,0,81,1,0,80,1,0,79,1,0,78,1,0,77,1,0,76
dc.w 1,0,75,1,0,74,1,0,73,1,0,72,1,0,71,1,0,70
dc.w 1,0,69,1,0,68,1,0,67,1,0,66,1,0,65,1,0,64
dc.w 1,0,63,1,0,62,1,0,61,1,0,60,1,0,59,1,0,58
dc.w 1,0,57,1,0,56,1,0,55,1,0,54,1,0,53,1,0,52
dc.w 1,0,51,1,0,50,1,0,49,1,0,48,1,0,47,1,0,46
dc.w 1,0,45,1,0,44,1,0,43,1,0,42,1,0,41,1,0,40
dc.w 1,0,39,1,0,38,1,0,37,1,0,36,1,0,35,1,0,34
dc.w 1,0,33,1,0,32,1,0,31,1,0,30,1,0,29,1,0,28
dc.w 1,0,27,1,0,26,1,0,25,1,0,24,1,0,23,1,0,22
dc.w 1,0,21,1,0,20,1,0,19,1,0,18,1,0,17,1,0,16
dc.w 2,16,0,2,17,0,2,18,0,2,19,0,2,20,0,2,21,0
dc.w 2,22,0,2,23,0,2,24,0,2,25,0,2,26,0,2,27,0
dc.w 2,28,0,2,29,0,2,30,0
dc.w 2,31,0,2,32,0,2,33,0,2,34,0
dc.w 2,35,0,2,36,0,2,37,0,2,38,0,2,39,0,2,40,0
dc.w 2,41,0,2,42,0,2,43,0,2,44,0,2,45,0,2,46,0
dc.w 2,47,0,2,48,0,2,49,0,2,50,0,2,51,0,2,52,0
dc.w 2,53,0,2,54,0,2,55,0,2,56,0,2,57,0,2,58,0
dc.w 2,59,0,2,60,0,2,61,0,2,62,0,2,63,0,2,64,0
dc.w 2,65,0,2,66,0,2,67,0,2,68,0,2,69,0,2,70,0
dc.w 2,71,0,2,72,0,2,73,0,2,74,0,2,75,0,2,76,0
dc.w 2,77,0,2,78,0,2,79,0,2,80,0,2,81,0,2,82,0
dc.w 2,83,0,2,84,0,2,85,0,2,86,0,2,87,0,2,88,0
dc.w 2,89,0,2,90,0,2,91,0,2,92,0,2,93,0,2,94,0
dc.w 2,95,0,2,96,0,2,97,0,2,98,0,2,99,0,2,100,0
dc.w 2,101,0,2,102,0,2,103,0,2,104,0,2,105,0
dc.w 2,106,0,2,107,0,2,108,0,2,109,0,2,110,0
dc.w 2,111,0,2,112,0,2,113,0,2,114,0,2,115,0
dc.w 2,116,0,2,117,0,2,118,0,2,119,0,2,120,0
dc.w 2,121,0,2,122,0,2,123,0,2,124,0,2,125,0
dc.w 2,126,0,2,127,0,2,128,0,2,129,0,2,130,0
dc.w 2,131,0,2,132,0,2,133,0,2,134,0,2,135,0
dc.w 2,136,0,2,137,0,2,138,0,2,139,0,2,140,0
dc.w 2,141,0,2,142,0,2,143,0,2,144,0,2,145,0
dc.w 2,146,0,2,147,0,2,148,0,2,149,0,2,150,0
dc.w 2,151,0,2,152,0,2,153,0,2,154,0,2,155,0
dc.w 2,156,0,2,157,0,2,158,0,2,159,0,2,160,0
dc.w 2,161,0,2,162,0,2,163,0,2,164,0,2,165,0
dc.w 2,166,0,2,167,0,2,168,0,2,169,0,2,170,0
dc.w 2,171,0,2,172,0,2,173,0,2,174,0,2,175,0
dc.w 2,176,0
dc.w 3,214,16,3,214,17,3,214,18,3,214,19,3,214,20
dc.w 3,214,21,3,214,22,3,214,23,3,214,24,3,214,25
dc.w 3,214,26,3,214,27
dc.w 3,214,28,3,214,29,3,214,30
dc.w 3,214,31,3,214,32,3,214,33,3,214,34,3,214,35
dc.w 3,214,36,3,214,37,3,214,38,3,214,39,3,214,40
dc.w 3,214,41,3,214,42,3,214,43,3,214,44,3,214,45
dc.w 3,214,46,3,214,47,3,214,48,3,214,49,3,214,50
dc.w 3,214,51,3,214,52,3,214,53,3,214,54,3,214,55
dc.w 3,214,56,3,214,57,3,214,58,3,214,59,3,214,60
dc.w 3,214,61,3,214,62,3,214,63,3,214,64,3,214,65
dc.w 3,214,66,3,214,67,3,214,68,3,214,69,3,214,70
dc.w 3,214,71,3,214,72,3,214,73,3,214,74,3,214,75
dc.w 3,214,76,3,214,77,3,214,78,3,214,79,3,214,80
dc.w 3,214,81,3,214,82,3,214,83,3,214,84,3,214,85
dc.w 3,214,86,3,214,87,3,214,88,3,214,89,3,214,90
dc.w 3,214,91,3,214,92,3,214,93,3,214,94,3,214,95
dc.w 3,214,96,3,214,97,3,214,98,3,214,99,3,214,100
dc.w 3,214,101,3,214,102,3,214,103,3,214,104
dc.w 3,214,105,3,214,106,3,214,107,3,214,108
dc.w 3,214,109,3,214,110,3,214,111,3,214,112
dc.w 3,214,113,3,214,114,3,214,115,3,214,116
dc.w 3,214,117,3,214,118,3,214,119,3,214,120
dc.w 3,214,121,3,214,122,3,214,123,3,214,124
dc.w 3,214,125,3,214,126,3,214,127,3,214,128
dc.w 3,214,129,3,214,130,3,214,131,3,214,132
dc.w 3,214,133,3,214,134,3,214,135,3,214,136
dc.w 3,214,137,3,214,138,3,214,139,3,214,140
dc.w 3,214,141,3,214,142,3,214,143,3,214,144
dc.w 3,214,145,3,214,146,3,214,147,3,214,148
dc.w 3,214,149,3,214,150,3,214,151
ring: dc.w 0,96,75,0,104,75,0,112,75,0,120,75,0,128,75
dc.w 1,128,83,1,128,91,1,128,99,1,128,107,1,128,115
dc.w 2,120,115,2,112,115,2,104,115,2,96,115,2,88,115
dc.w 3,88,107,3,88,99,3,88,91,3,88,83,3,88,75
ring2:
dc.w 80,67,88,67,96,67,104,67,112,67,120,67,128,67,136,67
dc.w 136,75,136,83,136,91,136,99,136,107,136,115,136,123
dc.w 128,123,120,123,112,123,104,123,96,123,88,123,80,123
dc.w 80,115,80,107,80,99,80,91,80,83,80,75
* pixels/scanline = $000D (bytes/scanline: $0008)
* # scanlines (height) = $0005
leftshot:
dc.w $0C00,$0000,$7C00,$0000,$6380,$3C40,$BFC0,$3C00
dc.w $7CC0,$43F8,$FFF8,$7FC0,$6380,$7C40,$FFC0,$7C00
dc.w $0C00,$0000,$7C00,$0000
* pixels/scanline = $0005 (bytes/scanline: $0008)
* # scanlines (height) = $000D
downshot:
dc.w $0000,$2000,$2000,$0000,$0000,$2000,$2000,$0000
dc.w $0000,$2000,$2000,$0000,$2000,$7000,$7000,$2000
dc.w $7000,$2000,$7000,$2000,$5000,$2000,$7000,$2000
dc.w $5000,$2000,$7000,$2000,$A800,$5000,$F800,$7000
dc.w $A800,$5000,$F800,$7000,$2000,$5000,$F800,$7000
dc.w $7000,$5000,$F800,$7000,$7000,$6000,$E800,$6000
dc.w $0000,$0000,$7000,$0000
* pixels/scanline = $000D (bytes/scanline: $0008)
* # scanlines (height) = $0005
rightshot:
dc.w $0180,$0000,$01F0,$0000,$0E30,$11E0,$1FE8,$01E0
dc.w $19F0,$FE10,$FFF8,$1FF0,$0E30,$11F0,$1FF8,$01F0
dc.w $0180,$0000,$01F0,$0000
* pixels/scanline = $0005 (bytes/scanline: $0008)
* # scanlines (height) = $000D
upshot:
dc.w $0000,$0000,$7000,$0000,$7000,$6000,$E800,$6000
dc.w $7000,$5000,$F800,$7000,$2000,$5000,$F800,$7000
dc.w $A800,$5000,$F800,$7000,$A800,$5000,$F800,$7000
dc.w $5000,$2000,$7000,$2000,$5000,$2000,$7000,$2000
dc.w $7000,$2000,$7000,$2000,$2000,$7000,$7000,$2000
dc.w $0000,$2000,$2000,$0000,$0000,$2000,$2000,$0000
dc.w $0000,$2000,$2000,$0000
balls1:
dc.w 0,0,0,0
dc.w 12292,12296,12,12300
dc.w 14390,12280,16410,26650
dc.w 16368,16382,16414,30750
dc.w 12,12,12300,12300
dc.w 8204,12300,0,0
dc.w 8200,12300,0,0
dc.w 8204,12296,0,0
dc.w 8204,12296,0,0
dc.w 8204,12296,0,0
dc.w 8204,12296,0,0
dc.w 4104,8204,12288,12300
dc.w 22572,26602,26640,26650
dc.w 18414,32750,30736,30750
dc.w 12288,12288,12300,12300
dc.w 0,0,0,0
balls2:
dc.w 0,0,0,0
dc.w 4104,6160,24,6168
dc.w 4332,8176,8244,15412
dc.w 8160,8188,8252,15420
dc.w 24,24,6168,6168
dc.w 4120,6168,0,0
dc.w 4112,6168,0,0
dc.w 4120,6160,0,0
dc.w 4120,6160,0,0
dc.w 4120,6160,0,0
dc.w 4120,6160,0,0
dc.w 2064,4120,6144,6168
dc.w 11480,13268,15392,15412
dc.w 9180,16348,15392,15420
dc.w 6144,6144,6168,6168
dc.w 0,0,0,0
balls3:
dc.w 0,0,0,0
dc.w 2064,3104,48,3120
dc.w 2520,4064,4200,7784
dc.w 4032,4088,4216,7800
dc.w 48,48,3120,3120
dc.w 3120,3120,0,0
dc.w 3104,3120,0,0
dc.w 3120,3104,0,0
dc.w 3120,3104,0,0
dc.w 3120,3104,0,0
dc.w 3120,3104,0,0
dc.w 1056,2096,3072,3120
dc.w 6064,6568,7744,7784
dc.w 4536,8120,7744,7800
dc.w 3072,3072,3120,3120
dc.w 0,0,0,0
balls4:
dc.w 0,0,0,0
dc.w 1056,1600,96,1632
dc.w 1200,1728,2512,4048
dc.w 1664,1776,2544,4080
dc.w 96,96,1632,1632
dc.w 1632,1632,0,0
dc.w 1600,1632,0,0
dc.w 1632,1600,0,0
dc.w 1632,1600,0,0
dc.w 1632,1600,0,0
dc.w 1632,1600,0,0
dc.w 576,1120,1536,1632
dc.w 2912,3408,3968,4048
dc.w 2416,3952,3968,4080
dc.w 1536,1536,1632,1632
dc.w 0,0,0,0
balls5:
dc.w 0,0,0,0
dc.w 832,896,192,960
dc.w 864,896,1440,1952
dc.w 768,992,1504,2016
dc.w 192,192,960,960
dc.w 960,960,0,0
dc.w 896,960,0,0
dc.w 960,896,0,0
dc.w 960,896,0,0
dc.w 960,896,0,0
dc.w 960,896,0,0
dc.w 128,960,768,960
dc.w 1216,1696,1792,1952
dc.w 1248,1760,1792,2016
dc.w 768,768,960,960
dc.w 0,0,0,0
balls6:
dc.w 0,0,0,0
dc.w 128,256,384,384
dc.w 704,768,832,832
dc.w 512,960,960,960
dc.w 384,384,384,384
dc.w 384,384,0,0
dc.w 256,384,0,0
dc.w 384,256,0,0
dc.w 384,256,0,0
dc.w 384,256,0,0
dc.w 384,256,0,0
dc.w 256,384,0,384
dc.w 384,320,512,832
dc.w 448,448,512,960
dc.w 0,0,384,384
dc.w 0,0,0,0
balls7:
dc.w 0,0,0,0
dc.w 384,704,768,960
dc.w 1472,1632,1664,1760
dc.w 1120,2016,1920,2016
dc.w 768,768,960,960
dc.w 960,960,0,0
dc.w 640,960,0,0
dc.w 896,704,0,0
dc.w 896,704,0,0
dc.w 896,704,0,0
dc.w 896,704,0,0
dc.w 576,896,192,960
dc.w 864,640,1120,1760
dc.w 896,992,1120,2016
dc.w 192,192,960,960
dc.w 0,0,0,0
balls8:
dc.w 0,0,0,0
dc.w 576,1120,1536,1632
dc.w 2912,3184,3456,3568
dc.w 2160,3952,3968,4080
dc.w 1536,1536,1632,1632
dc.w 1632,1632,0,0
dc.w 1088,1632,0,0
dc.w 1600,1120,0,0
dc.w 1600,1120,0,0
dc.w 1600,1120,0,0
dc.w 1600,1120,0,0
dc.w 1056,1600,96,1632
dc.w 1712,1472,2288,3568
dc.w 1920,2032,2288,4080
dc.w 96,96,1632,1632
dc.w 0,0,0,0
balls9:
dc.w 0,0,0,0
dc.w 1056,2096,3072,3120
dc.w 6048,6584,6720,6776
dc.w 4536,8120,7744,7800
dc.w 3072,3072,3120,3120
dc.w 3120,3120,0,0
dc.w 2080,3120,0,0
dc.w 3104,2096,0,0
dc.w 3104,2096,0,0
dc.w 3104,2096,0,0
dc.w 3104,2096,0,0
dc.w 2064,3104,48,3120
dc.w 3544,3040,4216,6776
dc.w 4032,4088,4216,7800
dc.w 48,48,3120,3120
dc.w 0,0,0,0
balls10:
dc.w 0,0,0,0
dc.w 2064,4120,6144,6168
dc.w 11472,13276,13344,13372
dc.w 9180,16348,15392,15420
dc.w 6144,6144,6168,6168
dc.w 6160,6168,0,0
dc.w 4112,6168,0,0
dc.w 6160,4120,0,0
dc.w 6160,4120,0,0
dc.w 6160,4120,0,0
dc.w 6160,4120,0,0
dc.w 4104,6160,24,6168
dc.w 6380,6128,8252,13372
dc.w 8160,8188,8252,15420
dc.w 24,24,6168,6168
dc.w 0,0,0,0
balls11:
dc.w 0,0,0,0
dc.w 4104,8204,12288,12300
dc.w 22572,26602,26640,26650
dc.w 18414,32750,30736,30750
dc.w 12288,12288,12300,12300
dc.w 8200,12300,0,0
dc.w 8204,12296,0,0
dc.w 8204,12296,0,0
dc.w 8204,12296,0,0
dc.w 8204,12296,0,0
dc.w 8204,12296,0,0
dc.w 8196,12296,12,12300
dc.w 12342,12280,16410,26650
dc.w 16368,16382,16414,30750
dc.w 12,12,12300,12300
dc.w 0,0,0,0
balls12:
dc.w 0,0,0,0
dc.w 0,0,0,0
dc.w 4104,8204,12288,12300
dc.w 22572,26602,26640,26650
dc.w 18414,32750,30736,30750
dc.w 12288,12288,12300,12300
dc.w 12300,12300,0,0
dc.w 8200,12300,0,0
dc.w 8204,12296,0,0
dc.w 8204,12296,0,0
dc.w 8196,12296,12,12300
dc.w 8246,16376,16414,30750
dc.w 16368,16382,16414,30750
dc.w 12,12,12300,12300
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
balls13:
dc.w 0,0,0,0
dc.w 0,0,0,0
dc.w 0,0,0,0
dc.w 4104,8204,12288,12300
dc.w 22572,26602,26640,26650
dc.w 18414,32750,30736,30750
dc.w 12288,12288,12300,12300
dc.w 12300,12300,0,0
dc.w 8200,12300,0,0
dc.w 8196,12296,12,12300
dc.w 8246,16376,16414,30750
dc.w 16368,16382,16414,30750
dc.w 12,12,12300,12300
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
balls14:
dc.w 0,0,0,0
dc.w 0,0,0,0
dc.w 0,0,0,0
dc.w 0,0,0,0
dc.w 4104,8204,12288,12300
dc.w 22572,26602,26640,26650
dc.w 18414,32750,30736,30750
dc.w 12288,12288,12300,12300
dc.w 12,12,12300,12300
dc.w 12276,16378,16414,30750
dc.w 16368,16382,16414,30750
dc.w 12,12,12300,12300
dc.w 0,0,0,0
dc.w 0,0,0,0
dc.w 0,0,0,0
dc.w 0,0,0,0
balls15:
dc.w 0,0,0,0
dc.w 0,0,0,0
dc.w 0,0,0,0
dc.w 0,0,0,0
dc.w 0,0,0,0
dc.w 4104,8204,12288,12300
dc.w 22572,26602,26640,26650
dc.w 18414,32750,30736,30750
dc.w 16368,16370,28702,30750
dc.w 16368,16382,16414,30750
dc.w 12,12,12300,12300
dc.w 0,0,0,0
dc.w 0,0,0,0
dc.w 0,0,0,0
dc.w 0,0,0,0
dc.w 0,0,0,0
balls16:
dc.w 0,0,0,0
dc.w 0,0,0,0
dc.w 0,0,0,0
dc.w 0,0,0,0
dc.w 0,0,0,0
dc.w 0,0,0,0
dc.w 4104,8204,12288,12300
dc.w 22572,26602,26640,26650
dc.w 18414,32750,30736,30750
dc.w 12288,12288,12300,12300
dc.w 0,0,0,0
dc.w 0,0,0,0
dc.w 0,0,0,0
dc.w 0,0,0,0
dc.w 0,0,0,0
dc.w 0,0,0,0
balls17:
dc.w 0,0,0,0
dc.w 0,0,0,0
dc.w 0,0,0,0
dc.w 0,0,0,0
dc.w 0,0,0,0
dc.w 8196,12296,12,12300
dc.w 14322,16380,16414,30750
dc.w 8184,12286,28690,30750
dc.w 22572,26602,26640,26650
dc.w 18414,32750,30736,30750
dc.w 12288,12288,12300,12300
dc.w 0,0,0,0
dc.w 0,0,0,0
dc.w 0,0,0,0
dc.w 0,0,0,0
dc.w 0,0,0,0
balls18:
dc.w 0,0,0,0
dc.w 0,0,0,0
dc.w 0,0,0,0
dc.w 0,0,0,0
dc.w 8196,12296,12,12300
dc.w 8246,16376,16414,30750
dc.w 16368,16382,16414,30750
dc.w 12,12,12300,12300
dc.w 4104,8204,12288,12300
dc.w 22572,26602,26640,26650
dc.w 18414,32750,30736,30750
dc.w 12288,12288,12300,12300
dc.w 0,0,0,0
dc.w 0,0,0,0
dc.w 0,0,0,0
dc.w 0,0,0,0
balls19:
dc.w 0,0,0,0
dc.w 0,0,0,0
dc.w 0,0,0,0
dc.w 8196,12296,12,12300
dc.w 8246,16376,16414,30750
dc.w 16368,16382,16414,30750
dc.w 12,12,12300,12300
dc.w 12300,12300,0,0
dc.w 8200,12300,0,0
dc.w 4104,8204,12288,12300
dc.w 22572,26602,26640,26650
dc.w 18414,32750,30736,30750
dc.w 12288,12288,12300,12300
dc.w 0,0,0,0
dc.w 0,0,0,0
dc.w 0,0,0,0
balls20:
dc.w 0,0,0,0
dc.w 0,0,0,0
dc.w 8196,12296,12,12300
dc.w 8246,16376,16414,30750
dc.w 16368,16382,16414,30750
dc.w 12,12,12300,12300
dc.w 12300,12300,0,0
dc.w 8200,12300,0,0
dc.w 8204,12296,0,0
dc.w 8204,12296,0,0
dc.w 4104,8204,12288,12300
dc.w 22572,26602,26640,26650
dc.w 18414,32750,30736,30750
dc.w 12288,12288,12300,12300
dc.w 0,0,0,0
dc.w 0,0,0,0
balls21:
dc.w 0,0,0,0
dc.w 8196,12296,12,12300
dc.w 12342,12280,16410,26650
dc.w 16368,16382,16414,30750
dc.w 12,12,12300,12300
dc.w 12300,12300,0,0
dc.w 8200,12300,0,0
dc.w 8204,12296,0,0
dc.w 8204,12296,0,0
dc.w 8204,12296,0,0
dc.w 8204,12296,0,0
dc.w 4104,8204,12288,12300
dc.w 22572,26602,26640,26650
dc.w 18414,32750,30736,30750
dc.w 12288,12288,12300,12300
dc.w 0,0,0,0
specialb:
dc.b $7F,$80,$00,$00,$81,$FE,$3C,$00
dc.b $AD,$C2,$7A,$00,$9D,$C2,$7E,$00
dc.b $8D,$C2,$7E,$00,$A5,$C2,$7E,$00
dc.b $C1,$FE,$3C,$00,$FE,$FF,$00,$00
animblocks:
dc.b 0,0,0,0
dc.b 0,0,0,0
dc.b 0,0,0,0
dc.b 0,0,0,0
dc.b 0,0,0,0
dc.b 0,0,0,0
dc.b 0,0,0,0
dc.b 0,0,0,0
anim5: dc.b 0,0,0,0
dc.b 0,0,0,0
dc.b 0,0,0,0
dc.b $10,0,0,$10
dc.b $8,0,0,$18
dc.b 0,0,0,0
dc.b 0,0,0,0
dc.b 0,0,0,0
anim4: dc.b $0,$0,$0,$0
dc.b $28,$0,$0,$38
dc.b $42,$0,$0,$7e
dc.b $16,$14,$14,$6a
dc.b $51,$10,$10,$6f
dc.b $1a,$0,$0,$3e
dc.b 0,0,0,0
dc.b 0,0,0,0
anim3: dc.b $38,$0,$0,$38
dc.b $5a,$10,$10,$6e
dc.b $c7,$4,$4,$fb
dc.b $b5,$34,$34,$cb
dc.b $9d,$1c,$1c,$e3
dc.b $4a,$8,$8,$76
dc.b $2e,$0,$0,$3e
dc.b 0,0,0,0
anim2: dc.b $c,$0,$0,$3c
dc.b $5a,$10,$10,$6e
dc.b $5d,$5c,$5c,$a3
dc.b $b4,$34,$34,$cb
dc.b $bd,$bc,$bc,$43
dc.b $a9,$28,$28,$d7
dc.b $7e,$10,$10,$6e
dc.b 0,0,0,0
dc.b $24,$0,$0,$3c
dc.b $16,$10,$10,$6f
dc.b $7d,$7c,$7c,$83
dc.b $3c,$3c,$3c,$c3
dc.b $99,$18,$18,$e7
dc.b $c1,$40,$40,$bf
dc.b $66,$0,$0,$7e
dc.b 0,0,0,0
even
sprite1:
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 8,0,0,8,0,0,0,0
dc.w 52,0,0,60,0,0,0,0
dc.w 74,8,8,118,0,0,0,0
dc.w 58,24,24,38,0,0,0,0
dc.w 36,0,0,60,0,0,0,0
dc.w 24,0,0,24,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
sprite2:
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 4,0,0,4,0,0,0,0
dc.w 6,0,0,6,0,0,0,0
dc.w 14,0,0,14,0,0,0,0
dc.w 243,0,0,255,0,0,0,0
dc.w 133,4,4,251,0,0,0,0
dc.w 173,44,44,211,0,0,0,0
dc.w 317,60,60,451,32768,0,0,32768
dc.w 829,60,60,963,32768,0,0,32768
dc.w 380,124,124,387,49152,0,0,49152
dc.w 414,30,30,481,32768,0,0,32768
dc.w 99,0,0,127,0,0,0,0
dc.w 62,0,0,62,0,0,0,0
dc.w 12,0,0,12,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
sprite3:
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,49152,0,0,49152
dc.w 65,0,0,65,49152,0,0,49152
dc.w 231,0,0,231,16384,0,0,49152
dc.w 158,0,0,255,16384,0,0,49152
dc.w 161,33,33,222,16384,0,0,49152
dc.w 179,51,51,204,24576,0,0,57344
dc.w 286,30,30,481,28672,0,0,61440
dc.w 800,32,32,991,28672,0,0,61440
dc.w 1954,34,34,2013,15360,0,0,64512
dc.w 3107,35,35,4060,39936,32768,32768,31744
dc.w 6641,497,497,7694,14336,0,0,63488
dc.w 1053,29,29,2018,8192,0,0,57344
dc.w 975,15,15,1008,40960,32768,32768,24576
dc.w 44,12,12,51,40960,32768,32768,24576
dc.w 51,0,0,63,8192,0,0,57344
dc.w 23,0,0,31,8192,0,0,57344
dc.w 29,0,0,29,57344,0,0,57344
dc.w 8,0,0,8,12288,0,0,12288
dc.w 8,0,0,8,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
sprite4:
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,5120,0,0,7168
dc.w 3584,0,0,3584,50176,0,0,64512
dc.w 1219,0,0,1987,38912,4096,4096,59392
dc.w 1254,0,0,2023,26624,24576,24576,38912
dc.w 1564,0,0,2047,24576,24576,24576,36864
dc.w 1793,1,1,2046,49152,49152,49152,12288
dc.w 801,33,33,990,40960,32768,32768,28672
dc.w 816,48,48,975,55296,49152,49152,14336
dc.w 31860,116,116,32651,18432,0,0,63488
dc.w 14788,196,196,16187,29440,28672,28672,36608
dc.w 18306,1922,1922,63613,26368,24576,24576,40704
dc.w 2331,2331,2331,63204,17920,16384,16384,48640
dc.w 25036,460,460,32307,23552,16384,16384,48128
dc.w 28256,96,96,28575,18432,16384,16384,47104
dc.w 1568,32,32,2015,6144,0,0,63488
dc.w 387,3,3,508,4096,0,0,61440
dc.w 321,65,65,446,40960,32768,32768,24576
dc.w 262,0,0,511,7168,0,0,64512
dc.w 831,0,0,1023,512,0,0,65024
dc.w 2027,0,0,2027,61952,0,0,62976
dc.w 768,0,0,768,28672,0,0,28672
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
sprite5:
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,13312,0,0,15360
dc.w 3584,0,0,3584,50176,0,0,64512
dc.w 1219,0,0,1987,39936,4096,4096,60416
dc.w 1250,0,0,2019,27648,24576,24576,39936
dc.w 1970,384,384,1651,26624,24576,24576,38912
dc.w 991,192,192,831,49152,49152,49152,12288
dc.w 449,0,0,511,45056,0,0,61440
dc.w 4346,2,2,4349,57344,16384,16384,40960
dc.w 31910,0,0,31975,65024,0,0,65024
dc.w 32690,0,0,32755,62208,12288,12288,52992
dc.w 51088,1536,1536,63985,26368,8192,8192,57088
dc.w 47537,14336,14336,51185,17920,0,0,65024
dc.w 58337,192,192,65313,31744,0,0,64512
dc.w 64796,0,0,64892,49152,0,0,49152
dc.w 1251,0,0,1279,49152,0,0,49152
dc.w 438,0,0,511,0,0,0,49152
dc.w 337,65,65,434,40960,32768,32768,24576
dc.w 280,0,0,505,64512,57344,57344,7168
dc.w 800,0,0,992,512,0,0,65024
dc.w 2016,0,0,2016,61952,0,0,62976
dc.w 768,0,0,768,28672,0,0,28672
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
sprite6:
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 2048,0,0,2048,61440,0,0,61440
dc.w 1985,0,0,1985,34816,0,0,63488
dc.w 1121,0,0,2017,47104,12288,12288,51200
dc.w 1344,256,256,1728,32768,0,0,61440
dc.w 576,0,0,960,28672,0,0,28672
dc.w 384,0,0,384,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 7200,0,0,7200,15872,0,0,15872
dc.w 32368,0,0,32368,25344,0,0,32512
dc.w 16976,0,0,32368,11008,2048,2048,14080
dc.w 15984,14336,14336,18032,12800,0,0,15872
dc.w 26720,0,0,30816,7168,0,0,7168
dc.w 6144,0,0,6144,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,8192,0,0,8192
dc.w 480,0,0,480,30720,0,0,30720
dc.w 800,256,256,736,64512,12288,12288,52224
dc.w 1504,256,256,1760,45056,8192,8192,53248
dc.w 768,0,0,768,28672,0,0,28672
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
sprite7:
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 2048,0,0,2048,12288,0,0,12288
dc.w 1280,0,0,1792,10240,0,0,14336
dc.w 1280,0,0,1792,2048,0,0,6144
dc.w 512,0,0,512,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 32,0,0,32,3584,0,0,3584
dc.w 24672,0,0,24672,2816,0,0,3840
dc.w 20480,0,0,28672,1792,0,0,1792
dc.w 32768,0,0,57344,0,0,0,0
dc.w 24576,0,0,24576,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,12288,0,0,12288
dc.w 896,0,0,896,22528,4096,4096,26624
dc.w 1152,0,0,1920,12288,0,0,12288
dc.w 768,0,0,768,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
sprite8:
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,12288,0,0,12288
dc.w 1024,0,0,1536,0,0,0,0
dc.w 0,0,0,512,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,256,0,0,256
dc.w 0,0,0,0,256,0,0,256
dc.w 32768,0,0,49152,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,2048,0,0,2048
dc.w 0,0,0,0,0,0,0,0
dc.w 1536,0,0,1536,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
blank:
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
ball: dc.w $0000,$7000,$0000,$0000,$7000,$C800,$0000,$0000
dc.w $5000,$E800,$0000,$0000,$7000,$F800,$0000,$0000
dc.w $0000,$7000,$0000,$0000
gore1:
dc.w 768,2016,1248,2016
dc.w 4856,7448,7904,8184
dc.w 5992,6292,12140,16380
dc.w 30572,30866,18286,32766
dc.w 19388,29762,31630,32718
dc.w 52787,61901,65026,65487
dc.w 13789,14883,50652,65535
dc.w 15246,13425,52111,65535
dc.w 53164,61523,65453,65535
dc.w 58485,64395,64630,65535
dc.w 60333,64595,62382,65535
dc.w 32160,32350,29614,32766
dc.w 24786,26622,32558,32766
dc.w 3732,4092,16236,16380
dc.w 8032,8032,8184,8184
dc.w 1600,1600,2016,2016
gore2:
dc.w 96,2016,1920,2016
dc.w 2976,3160,6072,8184
dc.w 12220,14404,14264,16380
dc.w 18590,30562,30876,32766
dc.w 20016,29134,32258,32718
dc.w 51255,63433,63494,65487
dc.w 14175,14497,51038,65535
dc.w 20104,29047,65161,65535
dc.w 51638,63049,63927,65535
dc.w 65300,63723,59159,65535
dc.w 57172,55467,59223,65535
dc.w 216,3886,32470,32766
dc.w 6950,8190,31962,32766
dc.w 15456,15864,16284,16380
dc.w 7576,7576,8184,8184
dc.w 448,448,2016,2016
gore3:
dc.w 768,2016,1248,2016
dc.w 4856,7448,7904,8184
dc.w 9960,14612,16108,16380
dc.w 20268,28882,32558,32766
dc.w 13246,15426,17292,32718
dc.w 52405,62283,64644,65487
dc.w 53082,61605,65371,65535
dc.w 49294,65393,61583,65535
dc.w 56494,62289,60591,65535
dc.w 38304,39519,60835,65535
dc.w 9519,15059,64812,65535
dc.w 32096,32414,29550,32766
dc.w 28818,30718,32622,32766
dc.w 1684,2044,16236,16380
dc.w 3696,3696,8184,8184
dc.w 1632,1632,2016,2016
bl1s1:
dc.w $0E00,$0000,$0000,$0000,$1E00,$0C00,$0000,$0000
dc.w $3C00,$1E00,$0000,$0000,$7C00,$3E00,$0000,$0000
dc.w $FC00,$0200,$0000,$0000,$0000,$FE00,$0000,$0000
dc.w $8000,$E200,$1C00,$0000,$C200,$DE00,$2000,$0000
dc.w $7E00,$3E00,$4000,$0000,$3E00,$3E00,$0000,$0000
bl1s2:
dc.w $0000,$0000,$0180,$0000,$C243,$C243,$0180,$0000
dc.w $FE7F,$BC3D,$0180,$0000,$FE7F,$8181,$0000,$0000
dc.w $8001,$FFFF,$0000,$0000,$8001,$FFFF,$0000,$0000
dc.w $C003,$C003,$3FFC,$0000,$FFFF,$FFFF,$0000,$0000
dc.w $FFFF,$FFFF,$0000,$0000
bl1s3:
dc.w $E000,$0000,$0000,$0000,$F000,$6000,$0000,$0000
dc.w $7800,$F000,$0000,$0000,$7C00,$F800,$0000,$0000
dc.w $7E00,$8000,$0000,$0000,$0000,$FE00,$0000,$0000
dc.w $0200,$8E00,$7000,$0000,$8600,$F600,$0800,$0000
dc.w $FC00,$F800,$0400,$0000,$F800,$F800,$0000,$0000
bl2s1:
dc.w $0B00,$0700,$0000,$0000,$1980,$0700,$0080,$0000
dc.w $38C0,$16C0,$0100,$0000,$78C0,$35C0,$0200,$0000
dc.w $F8C0,$75C0,$0200,$0000,$F8C0,$75C0,$0200,$0000
dc.w $C1C0,$3FC0,$0000,$0000
bl2s2: dc.w $7F80,$7F80,$0000,$0000,$7380,$4F80,$0000,$0000
dc.w $3180,$2D80,$0200,$0000,$3180,$2D80,$0200,$0000
dc.w $3180,$2D80,$0200,$0000,$3180,$2D80,$0200,$0000
dc.w $7180,$4D80,$0200,$0000,$0180,$1D80,$E200,$0000
dc.w $0180,$1D80,$E200,$0000,$7180,$4D80,$0200,$0000
dc.w $3180,$2D80,$0200,$0000,$3180,$2D80,$0200,$0000
dc.w $3180,$2D80,$0200,$0000,$3180,$2D80,$0200,$0000
dc.w $7380,$4F80,$0000,$0000,$7F80,$7F80,$0000,$0000
bl2s3: dc.w $C1C0,$3FC0,$0000,$0000,$F8C0,$75C0,$0200,$0000
dc.w $F8C0,$75C0,$0200,$0000,$78C0,$35C0,$0200,$0000
dc.w $38C0,$16C0,$0100,$0000,$1980,$0700,$0080,$0000
dc.w $0B00,$0700,$0000,$0000
bl3s1: dc.w $3E00,$3E00,$0000,$0000,$7E00,$3E00,$4000,$0000
dc.w $C200,$DE00,$2000,$0000,$8000,$E200,$1C00,$0000
dc.w $0000,$FE00,$0000,$0000,$FC00,$0200,$0000,$0000
dc.w $7C00,$3E00,$0000,$0000,$3C00,$1E00,$0000,$0000
dc.w $1E00,$0C00,$0000,$0000,$0E00,$0000,$0000,$0000
bl3s2: dc.w $FFFF,$FFFF,$0000,$0000,$FFFF,$FFFF,$0000,$0000
dc.w $C003,$C003,$3FFC,$0000,$8001,$FFFF,$0000,$0000
dc.w $8001,$FFFF,$0000,$0000,$FE7F,$8181,$0000,$0000
dc.w $FE7F,$BC3D,$0180,$0000,$C243,$C243,$0180,$0000
dc.w $0000,$0000,$0180,$0000
bl3s3: dc.w $F800,$F800,$0000,$0000,$FC00,$F800,$0400,$0000
dc.w $8600,$F600,$0800,$0000,$0200,$8E00,$7000,$0000
dc.w $0000,$FE00,$0000,$0000,$7E00,$8000,$0000,$0000
dc.w $7C00,$F800,$0000,$0000,$7800,$F000,$0000,$0000
dc.w $F000,$6000,$0000,$0000,$E000,$0000,$0000,$0000
bl4s1: dc.w $3400,$3800,$0000,$0000,$6600,$3800,$4000,$0000
dc.w $C700,$DA00,$2000,$0000,$C780,$EB00,$1000,$0000
dc.w $C7C0,$EB80,$1000,$0000,$C7C0,$EB80,$1000,$0000
dc.w $E0C0,$FF00,$0000,$0000
bl4s2: dc.w $FF00,$FF00,$0000,$0000,$E700,$F900,$0000,$0000
dc.w $C600,$DA00,$2000,$0000,$C600,$DA00,$2000,$0000
dc.w $C600,$DA00,$2000,$0000,$C600,$DA00,$2000,$0000
dc.w $C700,$D900,$2000,$0000,$C000,$DC00,$2380,$0000
dc.w $C000,$DC00,$2380,$0000,$C700,$D900,$2000,$0000
dc.w $C600,$DA00,$2000,$0000,$C600,$DA00,$2000,$0000
dc.w $C600,$DA00,$2000,$0000,$C600,$DA00,$2000,$0000
dc.w $E700,$F900,$0000,$0000,$FF00,$FF00,$0000,$0000
bl4s3: dc.w $E0C0,$FF00,$0000,$0000,$C7C0,$EB80,$1000,$0000
dc.w $C7C0,$EB80,$1000,$0000,$C780,$EB00,$1000,$0000
dc.w $C700,$DA00,$2000,$0000,$6600,$3800,$4000,$0000
dc.w $3400,$3800,$0000,$0000
appear1:
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
appear2:
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,8192
dc.w 0,0,0,0,0,0,0,0
dc.w 8,0,0,8,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,4096
dc.w 0,0,0,0,0,0,0,0
dc.w 16,16,0,16,0,0,0,0
dc.w 0,0,0,0,0,0,0,128
dc.w 0,0,0,4,0,0,0,0
dc.w 0,0,0,0,1024,1024,1024,8320
dc.w 0,0,0,0,0,0,0,0
dc.w 2,0,0,2,0,0,0,0
dc.w 0,0,0,8,0,0,0,16384
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
appear3:
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,16384,16384,16384,0
dc.w 0,0,0,2,0,0,0,0
dc.w 32,0,0,40,0,0,0,0
dc.w 0,0,0,4,0,0,0,8192
dc.w 0,0,0,0,0,0,0,512
dc.w 8,0,0,8,4096,0,0,12288
dc.w 2,0,0,34,0,0,0,2048
dc.w 0,0,0,512,0,0,0,4672
dc.w 128,0,0,128,0,0,0,0
dc.w 16,16,0,16,2048,2048,0,2304
dc.w 4,4,0,20,0,0,0,128
dc.w 1,0,0,5,0,0,0,0
dc.w 0,0,0,0,1024,1024,1024,8320
dc.w 1,0,0,257,256,0,0,256
dc.w 34,0,0,50,0,0,0,0
dc.w 0,0,0,8,0,0,0,16384
dc.w 0,0,0,0,0,0,0,0
dc.w 4,0,0,4,2048,2048,2048,0
dc.w 8,0,0,8,32768,0,0,32768
dc.w 0,0,0,1,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
appear4:
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,20480,20480,20480,0
dc.w 0,0,0,2,0,0,0,0
dc.w 32,0,0,40,36864,32768,32768,0
dc.w 0,0,0,36,1024,1024,1024,8192
dc.w 65,0,0,65,16384,0,0,16896
dc.w 168,0,0,168,4096,0,0,12288
dc.w 2,0,0,546,32768,0,0,34816
dc.w 0,0,0,517,0,0,0,4672
dc.w 128,0,0,132,0,0,0,49280
dc.w 16,16,0,16,2048,2048,0,2304
dc.w 4,4,0,20,256,0,0,2432
dc.w 65,0,0,69,0,0,0,4096
dc.w 0,0,0,64,33792,33792,33792,8320
dc.w 17,0,0,285,256,0,0,2304
dc.w 34,0,0,50,0,0,0,36864
dc.w 32,0,0,168,0,0,0,18432
dc.w 16,0,0,16,32768,0,0,32768
dc.w 4,0,0,4,2048,2048,2048,0
dc.w 8,0,0,8,32768,0,0,40960
dc.w 0,0,0,1,8192,8192,8192,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
appear5:
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 2,2,2,0,20480,20480,20480,0
dc.w 0,0,0,10,0,0,0,0
dc.w 96,0,0,105,53248,49152,49152,1024
dc.w 0,0,0,45,1024,1024,1024,24576
dc.w 195,0,0,227,16384,0,0,18944
dc.w 184,0,0,184,5120,1024,1024,45568
dc.w 10,0,0,554,49152,0,0,51264
dc.w 128,0,0,645,1280,256,256,13888
dc.w 128,0,0,420,256,256,256,50304
dc.w 16,16,0,49,2560,2560,512,3328
dc.w 69,4,0,85,12544,12288,0,14720
dc.w 81,0,0,93,0,0,0,12288
dc.w 0,0,0,64,33792,33792,33792,8832
dc.w 145,0,0,477,33024,32768,32768,6400
dc.w 34,0,0,50,1024,1024,1024,37376
dc.w 36,0,0,172,0,0,0,26624
dc.w 17,0,0,17,51200,2048,2048,49152
dc.w 20,0,0,20,18432,18432,18432,0
dc.w 13,0,0,13,32768,0,0,40960
dc.w 0,0,0,1,8192,8192,8192,0
dc.w 2,0,0,2,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
appear6:
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 2,2,2,8,53248,53248,53248,0
dc.w 0,0,0,15,1024,1024,1024,30720
dc.w 96,0,0,107,61952,57856,57856,1024
dc.w 0,0,0,47,3328,1280,1280,29184
dc.w 195,0,0,251,17408,1024,1024,27136
dc.w 184,0,0,191,5120,1024,1024,45568
dc.w 10,0,0,618,57344,0,0,60992
dc.w 128,0,0,709,1280,256,256,30272
dc.w 128,0,0,420,2304,256,256,60544
dc.w 80,24,0,121,2560,2560,512,3328
dc.w 205,12,0,477,12544,12288,0,31104
dc.w 81,0,0,351,3584,3072,3072,12800
dc.w 136,0,0,202,33792,33792,33792,25216
dc.w 147,0,0,479,33024,32768,32768,6400
dc.w 34,0,0,114,1024,1024,1024,37632
dc.w 36,0,0,175,1024,1024,1024,26624
dc.w 17,0,0,21,51200,2048,2048,49152
dc.w 21,1,1,20,26624,18432,18432,8192
dc.w 13,0,0,15,36864,4096,4096,40960
dc.w 0,0,0,3,8192,8192,8192,16384
dc.w 2,0,0,2,16384,0,0,16384
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
appear7:
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 3,3,3,12,61440,61440,61440,0
dc.w 16,0,0,29,1024,1024,1024,45056
dc.w 32,0,0,63,59904,59904,59904,1024
dc.w 64,0,0,107,2048,0,0,29184
dc.w 67,0,0,119,34048,1280,1280,43520
dc.w 248,0,0,255,4352,256,256,61952
dc.w 142,0,0,766,57600,256,256,64000
dc.w 32,0,0,813,1280,256,256,30272
dc.w 144,0,0,503,2304,256,256,60544
dc.w 80,16,0,497,2560,6656,512,40064
dc.w 231,4,0,503,29440,12800,512,31104
dc.w 48,0,0,62,3584,3072,3072,21120
dc.w 41,0,0,363,36096,35840,35840,25344
dc.w 178,0,0,510,49408,49152,49152,7040
dc.w 34,0,0,186,25600,25600,25600,6912
dc.w 36,0,0,190,1024,1024,1024,53504
dc.w 3,0,0,15,34816,2048,2048,45056
dc.w 28,0,0,28,51200,51200,51200,4096
dc.w 13,0,0,15,36864,4096,4096,49152
dc.w 0,0,0,2,8192,8192,8192,49152
dc.w 3,0,0,3,32768,0,0,32768
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
face1:
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 3,3,3,12,61440,61440,61440,0
dc.w 48,0,0,63,1024,1024,1024,63488
dc.w 96,0,0,127,64000,59904,59904,1024
dc.w 64,0,0,127,3328,1280,1280,61952
dc.w 195,0,0,255,50432,1280,1280,64000
dc.w 248,0,0,255,7424,1280,1280,64000
dc.w 143,0,0,767,57600,256,256,65088
dc.w 160,0,0,1007,1280,256,256,63168
dc.w 144,0,0,503,2304,256,256,61056
dc.w 80,24,0,505,2560,6656,512,40320
dc.w 239,12,0,511,63232,46592,34304,31104
dc.w 241,0,0,511,36608,35840,35840,29568
dc.w 185,0,0,511,36096,35840,35840,29568
dc.w 179,0,0,511,50432,50176,50176,15232
dc.w 35,0,0,255,25600,25600,25600,39680
dc.w 36,0,0,191,1024,1024,1024,63744
dc.w 19,0,0,31,51200,2048,2048,61440
dc.w 31,3,3,28,59392,51200,51200,12288
dc.w 13,0,0,15,36864,4096,4096,57344
dc.w 4,0,0,7,8192,8192,8192,49152
dc.w 3,0,0,3,49152,0,0,49152
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
face2:
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 3,3,3,12,61440,61440,61440,0
dc.w 48,0,0,63,1024,1024,1024,63488
dc.w 96,0,0,127,64000,59904,59904,1024
dc.w 64,0,0,127,3328,1280,1280,61952
dc.w 195,0,0,255,58624,1280,1280,64000
dc.w 240,0,0,255,7424,1280,1280,64000
dc.w 135,0,0,767,57600,256,256,65088
dc.w 160,0,0,1007,1280,256,256,63168
dc.w 144,0,0,499,2304,256,256,52864
dc.w 84,24,0,509,10752,6656,512,48512
dc.w 239,12,0,511,63232,46592,34304,31104
dc.w 241,0,0,511,36608,35840,35840,29568
dc.w 185,0,0,511,36096,35840,35840,29568
dc.w 179,0,0,511,50432,50176,50176,15232
dc.w 35,0,0,255,25600,25600,25600,39680
dc.w 36,0,0,191,1024,1024,1024,63744
dc.w 19,0,0,31,51200,2048,2048,61440
dc.w 29,1,0,28,43008,34816,2048,12288
dc.w 15,3,3,12,53248,53248,53248,8192
dc.w 6,0,0,7,8192,8192,8192,49152
dc.w 7,0,0,7,0,0,0,57344
dc.w 3,0,0,3,49152,0,0,49152
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
face3:
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 3,3,3,12,61440,61440,61440,0
dc.w 48,0,0,63,1024,1024,1024,63488
dc.w 96,0,0,127,64000,59904,59904,1024
dc.w 64,0,0,127,3328,1280,1280,61952
dc.w 199,0,0,255,58624,1280,1280,64000
dc.w 240,0,0,255,7424,1280,1280,64000
dc.w 135,0,0,767,57600,256,256,65088
dc.w 160,0,0,1007,1280,256,256,63168
dc.w 144,0,0,503,2304,256,256,61056
dc.w 80,24,0,505,35328,6656,512,40320
dc.w 231,0,0,511,59136,34304,34304,31104
dc.w 241,0,0,511,36608,35840,35840,29568
dc.w 185,0,0,511,36096,35840,35840,29568
dc.w 179,0,0,511,50432,50176,50176,15232
dc.w 35,0,0,255,25600,25600,25600,39680
dc.w 36,0,0,191,1024,1024,1024,63744
dc.w 18,0,0,30,18432,2048,2048,28672
dc.w 30,3,0,28,26624,51200,2048,12288
dc.w 14,2,2,12,20480,20480,20480,8192
dc.w 5,1,1,6,40960,40960,40960,16384
dc.w 6,0,0,7,0,0,0,57344
dc.w 3,0,0,3,49152,0,0,49152
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
face4:
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 3,3,3,12,61440,61440,61440,0
dc.w 48,0,0,63,1024,1024,1024,63488
dc.w 96,0,0,127,64000,59904,59904,1024
dc.w 64,0,0,127,3328,1280,1280,61952
dc.w 195,0,0,255,50432,1280,1280,64000
dc.w 248,0,0,255,7424,1280,1280,64000
dc.w 131,0,0,767,57600,256,256,65088
dc.w 160,0,0,1007,1280,256,256,63168
dc.w 144,0,0,497,2304,256,256,36480
dc.w 86,24,0,511,27136,6656,512,64896
dc.w 239,12,0,511,46848,46592,34304,31104
dc.w 241,0,0,511,36608,35840,35840,29568
dc.w 185,0,0,511,36096,35840,35840,29568
dc.w 179,0,0,511,50432,50176,50176,15232
dc.w 35,0,0,255,25600,25600,25600,39680
dc.w 36,0,0,191,1024,1024,1024,63744
dc.w 19,0,0,31,34816,2048,2048,61440
dc.w 29,1,0,28,43008,34816,2048,12288
dc.w 15,3,3,12,53248,53248,53248,8192
dc.w 6,0,0,7,8192,8192,8192,49152
dc.w 7,0,0,7,0,0,0,57344
dc.w 3,0,0,3,49152,0,0,49152
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
telea1:
dc.w 0,43690,43690,0,2,43691,43688,0
dc.w 0,32432,0,32432,3,2,0,0
dc.w 0,43690,43690,0,3,43690,43688,0
dc.w 0,28288,0,28288,3,2,0,0
dc.w 3,43692,43695,7,32771,10922,43688,32768
dc.w 8,24591,15,24591,49155,2,16384,16384
dc.w 12,43695,43695,15,16387,43690,60072,49152
dc.w 7,7,7,7,32771,32770,32768,32768
dc.w 24,43704,43704,0,24579,51882,51880,0
dc.w 36,32388,4,32440,12291,12290,12288,49152
dc.w 32,43648,43648,60,4099,6826,6824,57344
dc.w 32,22016,0,22076,36867,4098,4096,57344
dc.w 52,43648,43648,60,49155,2730,2728,61440
dc.w 24,0,0,24,24579,2,0,24576
dc.w 3,43692,43695,7,32771,10922,43688,32768
dc.w 8,15,15,15,49155,2,16384,16384
dc.w 12,43695,43695,15,16387,43690,60072,49152
dc.w 7,7,7,7,32771,32770,32768,32768
dc.w 0,43690,43690,0,3,43690,43688,0
dc.w 0,0,0,0,3,2,0,0
dc.w 0,43690,43690,0,3,43690,43688,0
dc.w 0,0,0,0,1,2,0,0
telea2:
dc.w 0,43690,43690,0,2,43691,43688,0
dc.w 0,32400,0,32400,3,2,0,0
dc.w 0,43690,43690,0,3,43690,43688,0
dc.w 0,29952,0,29952,3,2,0,0
dc.w 3,43692,43695,7,32771,10922,43688,32768
dc.w 9,32270,14,32270,16387,32770,49152,49152
dc.w 12,43695,43695,15,16387,43690,60072,49152
dc.w 7,7,7,7,32771,32770,32768,32768
dc.w 14,43680,43680,14,49155,43690,43688,0
dc.w 17,32384,0,32413,24579,24578,24576,32768
dc.w 25,43680,43680,29,8195,10922,10920,49152
dc.w 29,15232,0,15261,3,2,0,57344
dc.w 29,43680,43680,29,40963,2730,2728,57344
dc.w 14,0,0,14,49155,2,0,49152
dc.w 3,43692,43695,7,32771,10922,43688,32768
dc.w 9,14,14,14,16387,32770,49152,49152
dc.w 12,43695,43695,15,16387,43690,60072,49152
dc.w 7,7,7,7,32771,32770,32768,32768
dc.w 0,43690,43690,0,3,43690,43688,0
dc.w 0,0,0,0,3,2,0,0
dc.w 0,43690,43690,0,3,43690,43688,0
dc.w 0,0,0,0,1,2,0,0
telea3:
dc.w 0,43690,43690,0,2,43691,43688,0
dc.w 0,28576,0,28576,3,2,0,0
dc.w 0,43690,43690,0,3,43690,43688,0
dc.w 0,24192,0,24192,3,2,0,0
dc.w 3,43688,43691,3,3,43690,43688,0
dc.w 5,28678,6,28678,32771,2,32768,32768
dc.w 6,43695,43695,7,32771,10922,43688,32768
dc.w 3,3,3,3,3,2,0,0
dc.w 5,43689,43689,4,32771,10922,10920,0
dc.w 10,32000,0,32011,49155,49154,49152,0
dc.w 10,43680,43680,11,16387,27306,27304,32768
dc.w 10,27264,0,27275,3,2,0,49152
dc.w 10,43680,43680,11,3,10922,10920,49152
dc.w 5,0,0,5,32771,2,0,32768
dc.w 3,43688,43691,3,3,43690,43688,0
dc.w 5,6,6,6,32771,2,32768,32768
dc.w 6,43695,43695,7,32771,10922,43688,32768
dc.w 3,3,3,3,3,2,0,0
dc.w 0,43690,43690,0,3,43690,43688,0
dc.w 0,0,0,0,3,2,0,0
dc.w 0,43690,43690,0,3,43690,43688,0
dc.w 0,0,0,0,1,2,0,0
telea4:
dc.w 0,43690,43690,0,2,43691,43688,0
dc.w 0,29312,0,29312,3,2,0,0
dc.w 0,43690,43690,0,3,43690,43688,0
dc.w 0,25600,0,25600,3,2,0,0
dc.w 3,43688,43691,3,3,43690,43688,0
dc.w 5,31878,6,31878,32771,2,32768,32768
dc.w 6,43695,43695,7,32771,10922,43688,32768
dc.w 3,3,3,3,3,2,0,0
dc.w 3,43690,43690,0,3,43690,43688,0
dc.w 5,31361,1,31366,32771,32770,32768,0
dc.w 4,43688,43688,7,32771,43690,43688,0
dc.w 4,32384,0,32391,3,2,0,32768
dc.w 4,43688,43688,7,3,10922,10920,32768
dc.w 3,0,0,3,3,2,0,0
dc.w 3,43688,43691,3,3,10922,10920,0
dc.w 5,6,6,6,32771,2,32768,32768
dc.w 6,43695,43695,7,32771,10922,43688,32768
dc.w 3,3,3,3,3,2,0,0
dc.w 0,43690,43690,0,3,43690,43688,0
dc.w 0,0,0,0,3,2,0,0
dc.w 0,43690,43690,0,3,43690,43688,0
dc.w 0,0,0,0,1,2,0,0
telea5:
dc.w 0,43690,43690,0,2,43691,43688,0
dc.w 0,31008,0,31008,3,2,0,0
dc.w 0,43690,43690,0,3,43690,43688,0
dc.w 0,27968,0,27968,3,2,0,0
dc.w 3,43688,43691,3,3,43690,43688,0
dc.w 6,14597,5,14597,32771,2,32768,32768
dc.w 4,43695,43695,7,32771,10922,43688,32768
dc.w 3,3,3,3,3,2,0,0
dc.w 6,43692,43692,0,3,10922,10920,32768
dc.w 11,28675,3,28684,3,2,0,16384
dc.w 9,43681,43681,14,3,10922,10920,16384
dc.w 8,30272,0,30287,3,2,0,16384
dc.w 12,43680,43680,15,3,10922,10920,16384
dc.w 6,0,0,6,32771,2,0,32768
dc.w 3,43688,43691,3,3,43690,43688,0
dc.w 6,5,5,5,32771,2,32768,32768
dc.w 6,43695,43695,7,32771,10922,43688,32768
dc.w 3,3,3,3,3,2,0,0
dc.w 0,43690,43690,0,3,43690,43688,0
dc.w 0,0,0,0,3,2,0,0
dc.w 0,43690,43690,0,3,43690,43688,0
dc.w 0,0,0,0,1,2,0,0
telea6:
dc.w 0,43690,43690,0,2,43691,43688,0
dc.w 0,23680,0,23680,3,2,0,0
dc.w 0,43690,43690,0,3,43690,43688,0
dc.w 0,31424,0,31424,3,2,0,0
dc.w 3,43692,43695,7,32771,10922,43688,32768
dc.w 8,24591,15,24591,49155,2,16384,16384
dc.w 12,43695,43695,15,16387,43690,60072,49152
dc.w 7,7,7,7,32771,32770,32768,32768
dc.w 12,43688,43688,0,49155,60074,60072,0
dc.w 22,28678,6,28696,8195,8194,8192,49152
dc.w 18,43682,43682,28,40963,10922,10920,49152
dc.w 16,27520,0,27550,32771,2,0,57344
dc.w 16,43680,43680,30,57347,2730,2728,57344
dc.w 12,0,0,12,49155,2,0,49152
dc.w 3,43692,43695,7,32771,10922,43688,32768
dc.w 8,15,15,15,49155,2,16384,16384
dc.w 12,43695,43695,15,16387,43690,60072,49152
dc.w 7,7,7,7,32771,32770,32768,32768
dc.w 0,43690,43690,0,3,43690,43688,0
dc.w 0,0,0,0,3,2,0,0
dc.w 0,43690,43690,0,3,43690,43688,0
dc.w 0,0,0,0,1,2,0,0
unarmed:
dc.w $0777,$F888,$0777,$0777,$73E7,$8C18,$73E7,$73E7
dc.w $E777,$1888,$E777,$E777,$F7E0,$081F,$F7E0,$F7E0
dc.w $0555,$FAAA,$0555,$0555,$D634,$29CB,$D634,$D634
dc.w $35D4,$CA2B,$35D4,$35D4,$1430,$EBCF,$1430,$1430
dc.w $0554,$FAAB,$0554,$0554,$D5D5,$2A2A,$D5D5,$D5D5
dc.w $D495,$2B6A,$D495,$D495,$F5D0,$0A2F,$F5D0,$F5D0
dc.w $0555,$FAAA,$0555,$0555,$5414,$ABEB,$5414,$5414
dc.w $3554,$CAAB,$3554,$3554,$2550,$DAAF,$2550,$2550
dc.w $05D5,$FA2A,$05D5,$05D5,$95D5,$6A2A,$95D5,$95D5
dc.w $75D5,$8A2A,$75D5,$75D5,$F5D0,$0A2F,$F5D0,$F5D0
dc.w $0615,$F9EA,$0615,$0615,$D555,$2AAA,$D555,$D555
dc.w $9554,$6AAB,$9554,$9554,$1430,$EBCF,$1430,$1430
dc.w $03F7,$FC08,$03F7,$03F7,$7777,$8888,$7777,$7777
dc.w $F777,$0888,$F777,$F777,$F7E0,$081F,$F7E0,$F7E0
armed: dc.w $000F,$FFF0,$000F,$000F,$9F9D,$6062,$9F9D,$9F9D
dc.w $DFDF,$2020,$DFDF,$DFDF,$8000,$7FFF,$8000,$8000
dc.w $0018,$FFE7,$0018,$0018,$D0D7,$2F28,$D0D7,$D0D7
dc.w $5050,$AFAF,$5050,$5050,$C000,$3FFF,$C000,$C000
dc.w $0017,$FFE8,$0017,$0017,$5752,$A8AD,$5752,$5752
dc.w $57D7,$A828,$57D7,$57D7,$4000,$BFFF,$4000,$4000
dc.w $0010,$FFEF,$0010,$0010,$50D5,$AF2A,$50D5,$50D5
dc.w $5095,$AF6A,$5095,$5095,$4000,$BFFF,$4000,$4000
dc.w $0017,$FFE8,$0017,$0017,$55D7,$AA28,$55D7,$55D7
dc.w $57D7,$A828,$57D7,$57D7,$4000,$BFFF,$4000,$4000
dc.w $0015,$FFEA,$0015,$0015,$5655,$A9AA,$5655,$5655
dc.w $5050,$AFAF,$5050,$5050,$C000,$3FFF,$C000,$C000
dc.w $001D,$FFE2,$001D,$001D,$DFDD,$2022,$DFDD,$DFDD
dc.w $DFDF,$2020,$DFDF,$DFDF,$8000,$7FFF,$8000,$8000
bubble: dc.w $07E0,$07E0,$07E0,$07E0,$1FF8,$1FF8,$1FF8,$1FF8
dc.w $3D54,$3FFC,$3FFC,$3FFC,$7EAA,$7FDE,$7FFE,$7FFE
dc.w $7D76,$7F8E,$7FDE,$7FDE,$FEAB,$FFDF,$FFFF,$FFFF
dc.w $DF57,$FFFF,$FFFF,$FFFF,$CFAB,$FFFF,$FFFF,$FFFF
dc.w $DFFF,$FFFF,$FFFF,$FFFF,$CFFF,$FFFF,$FFFF,$FFFF
dc.w $D7FB,$FFFF,$FFFF,$FFFF,$6AA6,$7FFE,$7FFE,$7FFE
dc.w $754E,$7FFE,$7FFE,$7FFE,$381C,$3FFC,$3FFC,$3FFC
dc.w $1FF8,$1FF8,$1FF8,$1FF8,$07E0,$07E0,$07E0,$07E0
pop:
dc.w 24840,24840,24840,24840
dc.w 62364,37524,62364,62364
dc.w 42474,54902,55286,55286
dc.w 23484,27268,31676,31676
dc.w 4216,6520,6520,6520
dc.w 1344,1344,1344,1344
dc.w 16660,16668,16668,16668
dc.w 41436,57824,57852,57852
dc.w 60500,7260,64604,64604
dc.w 42736,59120,59120,59120
dc.w 19188,19180,19196,19196
dc.w 13758,16354,16374,16374
dc.w 24538,28086,32766,32766
dc.w 60094,40414,57342,57342
dc.w 46504,55256,63480,63480
dc.w 57976,57976,57976,57976
teleb1:
dc.w 0,43690,43690,0,0,43690,43690,0
dc.w 0,0,0,0,0,0,0,0
dc.w 2,43688,43690,0,32768,10922,43690,0
dc.w 0,0,0,0,0,0,0,0
dc.w 8,43680,43690,0,8192,2730,43690,0
dc.w 0,0,256,256,0,0,0,0
dc.w 288,43904,43690,256,8192,2730,43690,0
dc.w 640,896,1088,1984,0,0,0,0
dc.w 416,43776,43690,256,2560,170,43690,0
dc.w 0,0,256,256,0,0,0,0
dc.w 512,43008,43690,0,128,42,43690,0
dc.w 0,0,0,0,0,0,0,0
dc.w 512,43008,43690,0,512,170,43690,0
dc.w 0,0,0,0,0,0,0,0
dc.w 160,43520,43690,0,10240,682,43690,0
dc.w 0,0,0,0,0,0,60,0
dc.w 32,43648,43690,0,8192,2730,43690,0
dc.w 0,0,0,0,0,0,498,0
dc.w 10,43680,43690,0,16384,43690,60074,0
dc.w 0,0,0,0,0,0,54,0
dc.w 0,43690,43690,0,0,43690,43690,0
dc.w 0,0,0,0,0,0,502,0
teleb2:
dc.w 0,43690,43690,0,0,43690,43690,0
dc.w 0,0,0,0,0,0,0,0
dc.w 2,43688,43690,0,32768,10922,43690,0
dc.w 0,0,0,0,0,0,0,0
dc.w 8,43680,43946,256,8192,2730,43690,0
dc.w 256,256,0,256,0,0,0,0
dc.w 32,43904,43690,256,2048,682,43690,0
dc.w 1088,1984,2080,4064,0,0,0,0
dc.w 160,43776,43690,256,640,42,43690,0
dc.w 256,256,0,256,0,0,0,0
dc.w 512,43008,43946,256,32,10,43690,0
dc.w 0,0,0,0,0,0,0,0
dc.w 512,43008,43690,0,128,42,43690,0
dc.w 0,0,0,0,0,0,0,0
dc.w 160,43520,43690,0,2560,170,43690,0
dc.w 0,0,0,0,0,0,122,0
dc.w 32,43648,43690,0,8192,2730,43690,0
dc.w 0,0,0,0,0,0,102,0
dc.w 10,43680,43690,0,16384,43690,60074,0
dc.w 0,0,0,0,0,0,214,0
dc.w 0,43690,43690,0,0,43690,43690,0
dc.w 0,0,0,0,0,0,458,0
teleb3:
dc.w 2,43688,43690,0,0,43690,43690,0
dc.w 0,0,0,0,0,0,0,0
dc.w 0,43680,43690,0,32768,10922,43690,0
dc.w 0,0,256,256,0,0,0,0
dc.w 288,43904,43690,256,8832,2090,43690,0
dc.w 0,256,0,256,0,0,0,0
dc.w 32,43904,43690,256,2080,10,43690,0
dc.w 2336,3808,4112,7920,0,0,0,0
dc.w 160,43776,43690,256,32,10,43690,0
dc.w 0,256,0,256,0,0,0,0
dc.w 768,43264,43690,256,128,42,43690,0
dc.w 0,0,256,256,0,0,0,0
dc.w 512,43008,43690,0,128,42,43690,0
dc.w 0,0,0,0,0,0,0,0
dc.w 512,43008,43690,0,512,170,43690,0
dc.w 0,0,0,0,0,0,78,0
dc.w 512,43008,43690,0,512,170,43690,0
dc.w 0,0,0,0,0,0,14,0
dc.w 170,43520,43690,0,33280,170,43690,0
dc.w 0,0,0,0,0,0,2,0
dc.w 0,43690,43690,0,10240,33450,43690,0
dc.w 0,0,0,0,0,0,190,0
teleb4:
dc.w 0,43690,43690,0,0,43690,43690,0
dc.w 0,0,0,0,0,0,0,0
dc.w 682,43008,43690,0,43520,170,43690,0
dc.w 0,0,0,0,0,0,0,0
dc.w 512,43008,43946,256,128,42,43690,0
dc.w 256,256,0,256,0,0,0,0
dc.w 512,43264,43690,256,128,42,43690,0
dc.w 1088,1984,2080,4064,0,0,0,0
dc.w 512,43264,43690,256,128,42,43690,0
dc.w 256,256,0,256,0,0,0,0
dc.w 512,43008,43946,256,128,42,43690,0
dc.w 0,0,0,0,0,0,0,0
dc.w 512,43008,43690,0,128,42,43690,0
dc.w 0,0,0,0,0,0,0,0
dc.w 128,43520,43690,0,128,42,43690,0
dc.w 0,0,0,0,0,0,22,0
dc.w 128,43520,43690,0,8320,42,43690,0
dc.w 0,0,0,0,0,0,14,0
dc.w 42,43648,43690,0,43648,42,43690,0
dc.w 0,0,0,0,0,0,122,0
dc.w 0,43690,43690,0,0,43690,43690,0
dc.w 0,0,0,0,0,0,2,0
teleb5:
dc.w 0,43690,43690,0,0,43690,43690,0
dc.w 0,0,0,0,0,0,0,0
dc.w 34,43656,43690,0,43008,682,43690,0
dc.w 0,0,0,0,0,0,0,0
dc.w 138,43520,43690,0,512,170,43690,0
dc.w 0,0,256,256,0,0,0,0
dc.w 768,43264,43690,256,128,42,43690,0
dc.w 640,896,1088,1984,0,0,0,0
dc.w 768,43264,43690,256,128,42,43690,0
dc.w 0,0,256,256,0,0,0,0
dc.w 2048,40960,43690,0,160,10,43690,0
dc.w 0,0,0,0,0,0,0,0
dc.w 640,43008,43690,0,128,42,43690,0
dc.w 0,0,0,0,0,0,0,0
dc.w 128,43520,43690,0,128,42,43690,0
dc.w 0,0,0,0,0,0,30,0
dc.w 128,43520,43690,0,512,42,43562,0
dc.w 0,0,0,0,0,0,6,0
dc.w 42,43648,43690,0,10240,682,43690,0
dc.w 0,0,0,0,0,0,382,0
dc.w 0,43690,43690,0,32768,10922,43690,0
dc.w 0,0,0,0,0,0,126,0
block1: dc.b $7F,$80,$FF,$FF,$81,$FE,$FF,$FF
dc.b $81,$FE,$FF,$FF,$81,$FE,$FF,$FF
dc.b $81,$FE,$FF,$FF,$81,$FE,$FF,$FF
dc.b $81,$FE,$FF,$FF,$FE,$FF,$FF,$FF
block2: dc.b $26,$E7,$18,$FF,$D9,$FF,$00,$FF
dc.b $2A,$3E,$C1,$FF,$AD,$BD,$42,$FF
dc.b $AB,$BB,$44,$FF,$5C,$7C,$83,$FF
dc.b $A3,$FF,$00,$FF,$5C,$DF,$20,$FF
block3: dc.b $00,$FF,$00,$FF,$81,$FF,$00,$FF
dc.b $C3,$FF,$00,$FF,$E7,$FF,$00,$FF
dc.b $E7,$E7,$18,$FF,$C3,$C3,$3C,$FF
dc.b $81,$81,$7E,$FF,$00,$00,$FF,$FF
block4: dc.b $42,$7E,$FF,$FF,$BD,$C3,$FF,$FF
dc.b $66,$99,$FF,$FF,$5A,$BD,$FF,$FF
dc.b $5A,$BD,$FF,$FF,$66,$99,$FF,$FF
dc.b $BD,$C3,$FF,$FF,$42,$7E,$FF,$FF
block5: dc.b $E3,$FF,$00,$FF,$81,$9F,$60,$FF
dc.b $3C,$3F,$C0,$FF,$3C,$3F,$C0,$FF
dc.b $3C,$3F,$C0,$FF,$3C,$3F,$C0,$FF
dc.b $81,$87,$78,$FF,$C3,$C3,$3C,$FF
block6: dc.b $7F,$7F,$7F,$80,$89,$09,$09,$F6
dc.b $91,$11,$11,$EE,$A1,$21,$21,$DE
dc.b $C3,$43,$43,$BC,$07,$07,$07,$F8
dc.b $8D,$0D,$0D,$F2,$E6,$00,$00,$FF
block7: dc.b $5B,$7F,$5B,$A4,$A5,$25,$01,$FE
dc.b $A5,$25,$01,$FE,$7D,$7D,$81,$FE
dc.b $A1,$21,$01,$FE,$A6,$27,$00,$FF
dc.b $A5,$25,$01,$FE,$DA,$00,$24,$FF
block8: dc.b $FF,$00,$FF,$FF,$7E,$81,$FF,$FF
dc.b $3C,$C3,$FF,$FF,$18,$E7,$FF,$FF
dc.b $18,$FF,$FF,$FF,$3C,$FF,$FF,$FF
dc.b $7E,$FF,$FF,$FF,$FF,$FF,$FF,$FF
block9: dc.b $80,$FF,$00,$FF,$7E,$43,$80,$FF
dc.b $56,$11,$90,$EB,$62,$21,$A0,$DF
dc.b $72,$31,$B0,$CF,$5A,$19,$98,$E7
dc.b $3E,$03,$C0,$FF,$01,$01,$FE,$FF
block10:
dc.b $E9,$ED,$F3,$FF,$FF,$FF,$FF,$FF
dc.b $FF,$00,$FF,$FF,$00,$FF,$FF,$FF
dc.b $FF,$FF,$FF,$FF,$E5,$E5,$FB,$FF
dc.b $E9,$ED,$F3,$FF,$E9,$ED,$F3,$FF
block11:
dc.b $7F,$67,$7F,$98,$81,$19,$19,$FE
dc.b $81,$19,$19,$FE,$81,$FE,$FF,$FF
dc.b $81,$FE,$FF,$FF,$81,$19,$19,$FE
dc.b $81,$19,$19,$FE,$FE,$18,$18,$FF
block12:
dc.b $80,$80,$7F,$FF,$7E,$FE,$01,$FF
dc.b $62,$E2,$1D,$FF,$5A,$FA,$05,$FF
dc.b $5A,$FA,$05,$FF,$46,$FE,$01,$FF
dc.b $7E,$FE,$01,$FF,$01,$FF,$00,$FF
block13:
dc.b $84,$FF,$04,$FB,$7A,$7B,$80,$FF
dc.b $89,$09,$01,$FE,$6E,$6F,$80,$FF
dc.b $6E,$6F,$80,$FF,$A9,$29,$01,$FE
dc.b $6A,$6B,$80,$FF,$15,$01,$EA,$FF
block14:
dc.b $7F,$7F,$7F,$80,$81,$01,$01,$FE
dc.b $9D,$1D,$1D,$E2,$A5,$05,$05,$FA
dc.b $A5,$05,$05,$FA,$B9,$01,$01,$FE
dc.b $81,$01,$01,$FE,$FE,$00,$00,$FF
block15:
dc.b $80,$FF,$00,$FF,$7E,$7F,$BC,$FF
dc.b $56,$6B,$FA,$FB,$62,$5F,$FE,$FF
dc.b $72,$4F,$FE,$FF,$5A,$67,$FE,$FF
dc.b $3E,$3F,$FC,$FF,$01,$01,$FE,$FF
block16:
dc.b $49,$60,$96,$FF,$9A,$C2,$25,$FF
dc.b $95,$C4,$2A,$FF,$82,$C0,$3D,$FF
dc.b $40,$F9,$06,$FF,$B9,$BF,$40,$FF
dc.b $56,$1E,$A1,$FF,$E9,$38,$06,$FF
block17:
dc.b $03,$3C,$00,$FF,$7D,$7E,$00,$FF
dc.b $7E,$7F,$80,$FF,$7E,$7F,$80,$FF
dc.b $7E,$7F,$80,$FF,$7E,$7F,$80,$FF
dc.b $BE,$BE,$C0,$7F,$C0,$C0,$FC,$3F
block18:
dc.b $17,$10,$08,$FF,$33,$30,$0C,$FF
dc.b $71,$70,$0E,$FF,$70,$70,$8F,$FF
dc.b $0F,$FF,$00,$FF,$8E,$FE,$80,$7F
dc.b $CC,$FC,$C0,$3F,$E0,$F0,$E8,$1F
ə